小编典典

可以调用 ko.applyBindings 来绑定局部视图吗?

all

我正在使用 KnockoutJS 并有一个主视图和视图模型。我想要一个对话框(jQuery UI 之一)弹出另一个视图,该视图绑定一个单独的子视图模型。

对话框内容的 HTML 是使用 AJAX 检索的,因此我希望能够ko.applyBindings在请求完成后调用,并且我想将子视图模型绑定到对话框
div 中通过 ajax 加载的 HTML 部分。

这实际上是可能的还是我需要在页面最初加载然后调用ko.applyBindings一次时加载我的所有视图和视图模型?


阅读 52

收藏
2022-05-18

共1个答案

小编典典

ko.applyBindings接受第二个参数,该参数是用作根的 DOM 元素。

这将使您可以执行以下操作:

<div id="one">
  <input data-bind="value: name" />
</div>

<div id="two">
  <input data-bind="value: name" />
</div>

<script type="text/javascript">
  var viewModelA = {
     name: ko.observable("Bob")
  };

  var viewModelB = {
     name: ko.observable("Ted")
  };

  ko.applyBindings(viewModelA, document.getElementById("one"));
  ko.applyBindings(viewModelB, document.getElementById("two"));
</script>

因此,您可以使用此技术将 viewModel
绑定到加载到对话框中的动态内容。总的来说,你只是要小心不要applyBindings对同一个元素多次调用,因为你会得到多个事件处理程序。

2022-05-18