在初始化视图模型后,我尝试将数据绑定应用于自生成的DOM元素。但这似乎不起作用,所以我有一个问题:是否有可能使此数据绑定工作完全(也许使用某种更新功能)或没有。

例如:

的HTML:

<div id="content">
    <button onclick="create">create DOM ele</button>
</div>


javascript:

function MyViewModel() {
    var self = this;
    self.title = ko.observable('TITLE');
    }

ko.applyBindings(new MyViewModel());

function create() {
    div = document.createElement('div');
    div.setAttribute('data-bind', 'title()');

    document.getElementById("content").appendChild(div);
}


因此,如果按下浏览器检查器查看对象,则将在按下该按钮后创建div,并且数据绑定实际上是DOMelement的属性,但是viewmodel.title()的内容将永远不会显示。

最佳答案

数据绑定属性在运行applyBindings时处理,该操作在触发create()之前就已完成。您可以在create()期间在创建期间添加到页面的元素的子树上运行applyBindings。

function create() {
  div = document.createElement('div');
  div.setAttribute('data-bind', 'title()');

  ko.applyBindings(
    new MyViewModel(),
    div;
  )
}

关于javascript - knockout 数据绑定(bind)到自生成的DOM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27846406/

10-12 17:14