淘汰赛2:如何延迟可观察物体。

时间:2012-12-19 17:58:43

标签: mvvm observer-pattern knockout-2.0

嗨我在淘汰赛2中遇到问题:我想做后期绑定,因为我通过jQuery添加数据绑定

$("#button1").on ("click", function() {
        lateBinding = $("#lateBindingElem);
        if (lateBinding.length) {
           lateBinding.attr("data-bind", "text: obs");
        }
     }
});

后期绑定是动态生成的html。

我已经创建了一个已经调用MyViewModel的视图模型。

我想动态添加另一个属性或另一个observable(可以计算或未计算)到现有的视图模型?我该怎么办?

1 个答案:

答案 0 :(得分:-1)

希望你已经在其他地方找到了答案(7个月前:D)但是因为我偶然发现了这个问题,希望找到类似问题的解决方案,我不妨试着给出一个类似的问题。 - 任何其他人都在寻找它。这不允许您操作已绑定到模型的元素的绑定,但允许您在给定点暂停绑定并将新创建的元素绑定到当前或不同的视图模型。

以Ryan Niemeyers great article about how to stop bindings 为基础,随附的jsfiddle example little demo ,它为dom添加了新的输入元素并将它们绑定在一起到不同的视图模型。

一旦你需要使用自定义绑定在某个时刻停止向下绑定,你只能绑定dom的一部分。

ko.bindingHandlers.stopBinding = {
   init: function() {
      return { controlsDescendantBindings: true };
   }        
};

将其分配给包装器

<div data-bind="stopBinding: true" id="addNewContentHere"></div>

并插入新元素

function addInput(){
   var data=$('<input type="input" data-bind="value: newInput" />');
   ko.applyBindings(MyViewModel, data[0]);
   $('#addNewContentHere').append(data);
};

希望它有一些用处:)