如何使用敲除绑定新元素
How do I bind new elements using knockout?
如何绑定页面加载后创建的新元素?
我有一个类似的东西
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);
}
但根据这些帖子,这是行不通的。
淘汰赛的目标是在一组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/
希望这能有所帮助。
相关文章:
- 触摸移动时切换到新元素
- 将按钮添加到新元素中
- 如何在javascript上向数组的对象添加新元素
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 剑道UI下载列表:如何动态添加新元素
- 在DIV中动态插入HTML并访问新元素
- 使一个新元素在某个时间出现
- 单击不适用于新元素
- 动态添加新元素并更改其内容
- 没有为Ajax添加的新元素注册Jquery事件
- css在新元素上的转换
- 如何在不创建新元素的情况下修改 DOM 元素的位置
- jquery添加新元素
- 如何在遍历表和添加新元素时获得tr的索引
- PNG修复新元素
- 将点击事件绑定到新元素&使得ID'是独一无二的
- 从HTML表单中获取计算得到的JavaScript数据,并将其作为新元素添加到相同的表单操作中以使用PHP保存
- jQuery没有为具有新id的新元素执行代码
- jQuery倒计时-应用于通过AJAX/PHP加载的新元素
- 在元素内部创建新元素