Knockout.js将单击事件绑定到虚拟元素
我知道如何将锚元素绑定到单击事件。但我不确定如何在通过HTML绑定事件加载锚元素时执行此操作。这是我的密码:Knockout.js将单击事件绑定到虚拟元素,knockout.js,Knockout.js,我知道如何将锚元素绑定到单击事件。但我不确定如何在通过HTML绑定事件加载锚元素时执行此操作。这是我的密码: <a href='/my_page' data-bind="click:$root.loadPage">Click here to load</a> **我有一个称为“pageData”的可观察设置,它为页面提供HTML内容 我的问题是: 在我的“服务”HTML中,我在这里的一些HTML对象上设置了完全相同的单击绑定,但它们不会触发事件 有什么解决办法吗 提
<a href='/my_page' data-bind="click:$root.loadPage">Click here to load</a>
**我有一个称为“pageData”的可观察设置,它为页面提供HTML内容
我的问题是:
在我的“服务”HTML中,我在这里的一些HTML对象上设置了完全相同的单击绑定,但它们不会触发事件
有什么解决办法吗
提前谢谢
Rob当您调用applyBindings时,它只会影响页面上已经存在的内容,而不会影响以后加载的任何内容 但是,可以对添加到页面的新标记块再次调用applyBindings
var viewmodel = ...;
ko.applyBindings(viewmodel);
this.loadPage = function(data,object)
{
self.showLoadingIndicator();
$.get(object.target.href, function(response)
{
self.pageData(response.html);
var newStuffAddedToDOM = ...;
ko.applyBindings(viewmodel, newStuffAddedToDOM);
}, 'json');
}
这里有一个可行的办法:我以前看过那篇文章,但我无法找到解决方案,所以我只能假设这是另一个问题。我认为ko.ApplyBindings中的第二个参数会起作用,如果我能弄清楚我应该在这里放什么。。。我试图将“pageData”绑定到的div对象…其中newStuffAddedToDOM=response.html??是这样吗?我得到一个错误,说第二个参数必须是DOM节点……正如错误所示,newStuffAddedToDOM需要是对DOM节点的引用,例如newStuffAddedToDOM=$(“#容器”)[0];其中“container”是包装页面数据内容的(或其他元素)的ID。
var viewmodel = ...;
ko.applyBindings(viewmodel);
this.loadPage = function(data,object)
{
self.showLoadingIndicator();
$.get(object.target.href, function(response)
{
self.pageData(response.html);
var newStuffAddedToDOM = ...;
ko.applyBindings(viewmodel, newStuffAddedToDOM);
}, 'json');
}