<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      KnockoutJS 3.X API 第七章 其他技術(shù)(5) 使用其他事件處理程序

      在大多數(shù)情況下,數(shù)據(jù)綁定屬性提供了一種干凈和簡(jiǎn)潔的方式來(lái)綁定到視圖模型。 然而,事件處理是一個(gè)常常會(huì)導(dǎo)致詳細(xì)數(shù)據(jù)綁定屬性的領(lǐng)域,因?yàn)槟涿瘮?shù)通常是傳遞參數(shù)的推薦技術(shù)。 例如:

      <a href="#" data-bind="click: function() { viewModel.items.remove($data); }">
          remove
      </a>

      作為替代,Knockout提供了兩個(gè)幫助函數(shù),它們?cè)试S您標(biāo)識(shí)與DOM元素關(guān)聯(lián)的數(shù)據(jù):

      • ko.dataFor(element) - 返回可用于與元素綁定的數(shù)據(jù)
      • ko.contextFor(element) - 返回DOM元素可用的整個(gè)綁定上下文

      這些幫助函數(shù)可以在事件處理程序中使用,這些事件處理程序使用類似于jQuery的綁定或單擊的方式地附加。 上面的函數(shù)可以連接到每個(gè)鏈接一個(gè)刪除類,如:

      $(".remove").click(function () {
          viewModel.items.remove(ko.dataFor(this));
      });

      更好的是,這種技術(shù)可以用于支持事件委托。 jQuery live / delegate / on函數(shù)是一個(gè)簡(jiǎn)單的方法來(lái)實(shí)現(xiàn)這一點(diǎn):

      $(".container").on("click", ".remove", function() {
          viewModel.items.remove(ko.dataFor(this));
      });

      現(xiàn)在,單個(gè)事件處理程序在更高級(jí)別附加,并處理與remove類的任何鏈接的點(diǎn)擊。 此方法還具有自動(dòng)處理動(dòng)態(tài)添加到文檔的附加鏈接(可能是由于項(xiàng)目添加到observableArray的結(jié)果)的額外好處。

      示例:嵌套子節(jié)點(diǎn)

      此示例顯示父級(jí)和子級(jí)的多個(gè)級(jí)別上的“add”和“remove”鏈接,每個(gè)類型的鏈接具有單個(gè)處理程序。

        UI源碼:

        <ul id="people" data-bind='template: { name: "personTmpl", foreach: people }'>
        </ul>
         
        <script id="personTmpl" type="text/html">
            <li>
                <a class="remove" href="#"> x </a>
                <span data-bind='text: name'></span>
                <a class="add" href="#"> add child </a>
                <ul data-bind='template: { name: "personTmpl", foreach: children }'></ul>
            </li>
        </script>

        視圖模型源碼:

        var Person = function(name, children) {
            this.name = ko.observable(name);
            this.children = ko.observableArray(children || []);
        };
         
        var PeopleModel = function() {
            this.people = ko.observableArray([
                new Person("Bob", [
                    new Person("Jan"),
                    new Person("Don", [
                        new Person("Ted"),
                        new Person("Ben", [
                            new Person("Joe", [
                                new Person("Ali"),
                                new Person("Ken")
                            ])
                        ]),
                        new Person("Doug")
                    ])
                ]),
                new Person("Ann", [
                    new Person("Eve"),
                    new Person("Hal")
                ])
            ]);
         
            this.addChild = function(name, parentArray) {
                parentArray.push(new Person(name));
            };
        };
         
        ko.applyBindings(new PeopleModel());
         
        //attach event handlers
        $("#people").on("click", ".remove", function() {
            //retrieve the context
            var context = ko.contextFor(this),
                parentArray = context.$parent.people || context.$parent.children;
         
            //remove the data (context.$data) from the appropriate array on its parent (context.$parent)
            parentArray.remove(context.$data);
         
            return false;
        });
         
        $("#people").on("click", ".add", function() {
            //retrieve the context
            var context = ko.contextFor(this),
                childName = context.$data.name() + " child",
                parentArray = context.$data.people || context.$data.children;
         
            //add a child to the appropriate parent, calling a method off of the main view model (context.$root)
            context.$root.addChild(childName, parentArray);
         
            return false;
        });

        無(wú)論嵌套鏈接如何嵌套,處理程序總是能夠識(shí)別和操作適當(dāng)?shù)臄?shù)據(jù)。 使用這種技術(shù),我們可以避免將處理程序附加到每個(gè)鏈接的開(kāi)銷,并可以保持標(biāo)記清潔和簡(jiǎn)潔。

        posted @ 2016-10-19 11:05  SmallProgram  閱讀(862)  評(píng)論(0)    收藏  舉報(bào)
        主站蜘蛛池模板: 亚洲av久久精品狠狠爱av| 久久天天躁狠狠躁夜夜2020老熟妇| 国产偷窥熟女精品视频大全 | 69天堂人成无码免费视频| 91香蕉国产亚洲一二三区| 国产亚洲av手机在线观看| 国产精品国语对白露脸在线播放 | 久久96热人妻偷产精品| 日韩全网av在线| 18禁精品一区二区三区| 午夜欧美日韩在线视频播放 | 亚洲天堂精品一区二区| 成人午夜无人区一区二区| 一女被多男玩喷潮视频| 日韩黄色av一区二区三区| 无码里番纯肉h在线网站| 国产老熟女乱子一区二区| 亚洲 欧美 影音先锋| 国产综合精品一区二区在线| 佛学| 精品国产成人亚洲午夜福利 | √天堂中文www官网在线| 亚洲综合国产激情另类一区 | 国产萌白酱喷水视频在线观看 | 717午夜伦伦电影理论片| 中国亚洲女人69内射少妇| 亚洲高清国产拍精品熟女| 亚洲国产色播AV在线| 国精偷拍一区二区三区| 欧美日韩亚洲国产| 国产精品综合在线免费看| 国产日韩精品视频无码| 开心五月婷婷综合网站| 18无码粉嫩小泬无套在线观看| 中文无码热在线视频| 国产精久久一区二区三区| 精品国产亚洲区久久露脸| 无码高潮爽到爆的喷水视频app| 日韩精品一卡二卡三卡在线 | 日本一区二区三区专线| 偷拍精品一区二区三区|