Knockout.js将单击事件绑定到虚拟元素

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对象上设置了完全相同的单击绑定,但它们不会触发事件 有什么解决办法吗 提

我知道如何将锚元素绑定到单击事件。但我不确定如何在通过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');    
}