jquery - 如何结合 ko.js 和 jQuery 淡入动态绑定(bind)的 DOM 对象?

标签 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="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() 函数添加到动态添加的列表项中,以便它们随着数字的更改而淡入?这里是上面代码的 JSFiddle 链接:http://jsfiddle.net/HdR8L/2/

最佳答案

一种选择是添加一个简单的 fadeText 绑定(bind),您可以使用它来代替 text 绑定(bind)。它看起来像:

ko.bindingHandlers.fadeText = {
    update: function(element, valueAccessor) {
        $(element).hide();
        ko.bindingHandlers.text.update(element, valueAccessor);
        $(element).fadeIn(1000);
    }        
};

然后,您可以使用它来代替现有的 text 绑定(bind),例如:http://jsfiddle.net/rniemeyer/HdR8L/3/

其他选项是使用 afterAdd 回调,如下所述:http://knockoutjs.com/documentation/foreach-binding.html#note_5_postprocessing_or_animating_the_generated_dom_elements

关于jquery - 如何结合 ko.js 和 jQuery 淡入动态绑定(bind)的 DOM 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979695/

相关文章:

jquery - 将 document.ready 重构为 Object

javascript - 受javascript影响后如何恢复到原来的DOM

wpf - 微软用于 MVVM 的 ViewModelBase 类?

wpf - 使用 DataTrigger 启动需要动态值的动画

javascript - 当使用 Knockout 绑定(bind)排序或加载数据时,数据表偶尔挂起(表中没有可用数据)

javascript - 如何使用 Knockout 绑定(bind) javascript 对话框?

javascript - 我怎样才能在情节上获得静态工具提示,highstock?

javascript - 对 HTML 表格进行排序

c# - 依赖属性 UserControl 绑定(bind)不起作用

css - 在 <li> 悬停时显示 "Finger"就像它的 <a>