如何利用基因敲除结合新的元素?(How do I bind new elements using k

2019-09-16 09:11发布

我怎样才能绑定页面加载后,一个新的元素创建?

我有这样的事情

system = function()
{

    this.hello = function()
    {
        alert("hello");
    }

    this.makeUI = function(container)
    {
        div = document.createElement("div");
        div.innerHTML = "<button data-bind='click: hello'>Click</button>";
    }
}

ko.applyBindings(new system);

如果我试试这个

this.makeUI = function(container)
{
    div = document.createElement("div");
    div.innerHTML = "<button data-bind='click: hello'>Click</button>";
    ko.applyBindings(new system,div);
}    

但根据这些 职位将无法正常工作。

Answer 1:

与淘汰赛的目标是只对一组DOM元素调用一次淘汰赛。 因此,如果你对整个文档多次拨打applyBindings你将有多个绑定的问题。

存在其中主叫applyBindings多次少数情况下是有道理的,这是在其中没有在DOM在第一结合的时间,并因此没有结合部分景色的情况。 您可以通过选择范围界定的applyBindings到DOM元素绑定这些。

这里是什么你想达到一个例子。 你的问题是,你不插入您创建的节点。

http://jsfiddle.net/madcapnmckay/qSqJv/

我不推荐这种方法对于这个特殊的例子,有一个更好的办法。

如果要动态创建DOM元素,并让他们通过淘汰赛的约束,最常见的方法是使用内置的模板功能,这需要插入的元素和有约束力的任何数据绑定属性,它发现的照顾。

所以,如果你想创建一个数字按钮的你可以这样做

this.makeUI = function(container)
{
    self.buttons.push({
        text: "button " + self.buttons().length,
        handler: this.hello
    });
}

这里有一个小提琴。

http://jsfiddle.net/madcapnmckay/ACjvs/

希望这可以帮助。



文章来源: How do I bind new elements using knockout?