敲除2:如何延迟可观察的对象



嗨,我在敲除2中有问题:我想进行较晚的绑定,因为我正在通过jquery

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

较晚的绑定是生成的HTML。

我有一个创建的视图模型已经调用myViewModel。

我想在现有视图模型中添加另一个属性或另一个可观察到的属性(可以计算或未计算)?我该怎么做?

希望您已经在其他地方找到了答案(7个月前:D),但是由于我偶然发现了这个问题,希望能找到解决类似问题的解决方案,所以我也可以尝试一下为其他任何人看待它提供一种援助。这不会让您操纵已经绑定到模型的元素的绑定,而是让您在给定点暂停绑定并将新创建的元素绑定到当前或其他视图模型。

建立在Ryan Niemeyers 上的精彩文章,内容涉及如何停止绑定和随附的JSFiddle示例是 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);
};

希望它有些用:)

最新更新