小编典典

您可以调用ko.applyBindings绑定部分视图吗?

ajax

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

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

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


阅读 276

收藏
2020-07-26

共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在同一元素上多次调用,因为您将获得多个事件处理程序。

2020-07-26