如何结合ko.js和jQuery来淡入动态绑定的DOM对象?

如何结合ko.js和jQuery来淡入动态绑定的DOM对象?,jquery,mvvm,knockout.js,Jquery,Mvvm,Knockout.js,假设我有以下HTML: <input data-bind="value: numberOne, valueUpdate: 'afterkeydown'" /> <p/> <input data-bind="value: numberTwo, valueUpdate: 'afterkeydown'" /><p/> <span data-bind="text: comp"></span> <ul data-bind="fo

假设我有以下HTML:

<input data-bind="value: numberOne, valueUpdate: 'afterkeydown'" />
<p/>
<input data-bind="value: numberTwo, valueUpdate: 'afterkeydown'" /><p/>
<span data-bind="text: comp"></span>
<ul data-bind="foreach: stuff">
    <li><span data-bind="text: name"></span></li>
</ul>
以及ko.js中的以下ViewModel

function myVm() {
   var self = this;
   var counter = 0;
   var myArray = new Array(5);
    for(i = 0; i < myArray.length; i++){
        myArray[i] = { name: "Blah "+( i + 1 ) };
    }
   self.stuff = ko.observableArray(myArray);
   self.numberOne = ko.observable(0);
   self.numberTwo = ko.observable(5);
   self.comp = ko.computed(function(){ 
    if(counter > 0){ 
        if(self.stuff().length > ( parseInt(self.numberOne(), 10) + parseInt(self.numberTwo(), 10) )){

            for(i = ( parseInt(self.numberOne(), 10) + parseInt(self.numberTwo(), 10) ); i < self.stuff().length; i++){
                self.stuff.pop();
            }
        }else{

                for(i = self.stuff().length; i < ( parseInt(self.numberOne(), 10) + parseInt(self.numberTwo(), 10) ); i++){
                self.stuff.push({ name: "Blah "+( i + 1 ) });
            }
        }

            }
            counter++;
            return parseInt(self.numberOne(), 10) + parseInt(self.numberTwo(), 10); 
           });
}
var vm = new myVm();
ko.applyBindings(vm);

如何添加jQuery.fadeIn函数​ 添加到动态添加的列表项中,以便它们随着数字的更改而淡入?下面是指向上述代码的JSFIDLE链接:

一个选项是添加一个简单的fadeText绑定,您可以使用它来代替文本绑定。它看起来像:

ko.bindingHandlers.fadeText = {
    update: function(element, valueAccessor) {
        $(element).hide();
        ko.bindingHandlers.text.update(element, valueAccessor);
        $(element).fadeIn(1000);
    }        
};
然后,您可以使用它代替现有的文本绑定,如:


其他选项是使用此处所述的afterAdd回调:

一个选项是添加一个简单的fadeText绑定,您可以使用它代替文本绑定。它看起来像:

ko.bindingHandlers.fadeText = {
    update: function(element, valueAccessor) {
        $(element).hide();
        ko.bindingHandlers.text.update(element, valueAccessor);
        $(element).fadeIn(1000);
    }        
};
然后,您可以使用它代替现有的文本绑定,如:


其他选项是使用此处描述的afterAdd回调:

谢谢!非常好的链接,谢谢!优秀的链接以及。