2

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

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

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

我已经创建了一个视图模型,名为 MyViewModel。

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

4

1 回答 1

-1

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

建立在 Ryan Niemeyers关于如何停止绑定的精彩文章和附带的jsfiddle 示例的基础上,是一个小演示,它向 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);
};

希望它有一些用处:)

于 2013-08-02T16:32:42.430 回答