【问题标题】:Knockout 2: How to delay observable object.淘汰赛 2:如何延迟可观察对象。
【发布时间】:2012-12-19 17:58:42
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: mvvm observer-pattern knockout-2.0


    【解决方案1】:

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

    基于 Ryan Niemeyers great article about how to stop bindings 和随附的 jsfiddle example 是一个 little demo,它向 dom 添加新的输入元素并将它们绑定到不同的视图模型。 p>

    由于您只能在需要使用自定义绑定在某个点停止向下绑定时绑定 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);
    };
    

    希望它有一些用处:)

    【讨论】:

      猜你喜欢
      • 2017-09-19
      • 2014-08-08
      • 2014-11-05
      • 2012-09-08
      • 2012-07-07
      • 2015-01-25
      • 2018-03-30
      相关资源
      最近更新 更多