Javascript li项单击事件的动态绑定
我有durandal和knockout web应用程序。 我有一个html,如下所示:Javascript li项单击事件的动态绑定,javascript,jquery,html,knockout.js,Javascript,Jquery,Html,Knockout.js,我有durandal和knockout web应用程序。 我有一个html,如下所示: <ul id="header"> </ul> 在.js函数中,我动态添加li,如下所示: $("#header).append('<li id="btn"><a href="javascript://" data-bind="click:function(data,event) { $root.testmethod(data,event); return t
<ul id="header">
</ul>
在.js函数中,我动态添加li,如下所示:
$("#header).append('<li id="btn"><a href="javascript://" data-bind="click:function(data,event) { $root.testmethod(data,event); return true;}"> <span class="name">Test</span></a></li>')
ko.applyBindingsToNode(ul);
$(“#头)。追加(“”)
ko.applyBindingsToNode(ul);
我知道,在调用applyBindings之后,我正在绑定li
但是仍然没有运气
有人能告诉我这个的语法/替代解决方案是什么吗?
/
开始一个JavaScript注释。这意味着之后的所有内容都参考演示
请查找以下代码:
HTML:
<ul id="header">
</ul>
$(function() {
$("#header").append('<li id="btn">' + '<a href="javascript://" data-bind="click:function(data,event) { $root.testmethod(data,event); return true;}"> <span class="name">Test</span></a></li>');
//ko.applyBindingsToNode(ul);
});
JS:
<ul id="header">
</ul>
$(function() {
$("#header").append('<li id="btn">' + '<a href="javascript://" data-bind="click:function(data,event) { $root.testmethod(data,event); return true;}"> <span class="name">Test</span></a></li>');
//ko.applyBindingsToNode(ul);
});
$(函数(){
$(“#头”).append(“”+” ”);
//ko.applyBindingsToNode(ul);
});
使用foreach:
var DemoPage=(函数(){
函数DemoPage(){
var_this=这个;
_this.buttons=ko.observearray([]);
_this.debug=ko.可观察(“”);
_this.testmethod=函数(数据、事件){
_this.debug('Clicked LI:'+data.buttonId);
}
_this.addHeadingRow=函数(){
_这个按钮({
buttonId:Math.floor(Math.random()*100)
});
}
}
返回演示页面;
})();
var demoApp=new DemoPage();
ko.applyBindings(demoApp);
-
试验
添加标题行
我想回答我自己的问题
解决方案非常简单
在.js文件中定义一个可观察数组
self.arraysample = ko.observableArray([]);
在方法中,使用数据填充数组
self.arraysample.push(data)
在html页面中,我们可以执行以下操作:
<ul id="head" data-bind:"foeach:arraysample">
<li>
<a id="btn">
<span data-bind="text:$data.arrayelement"></span>
</a>
</li>
</ul>
-
这就是当“self.arraysample”中的数据发生更改时,将自动更新,因为会删除js属性
我希望它能帮助一些人,因为我在网上看到过很多建议再次使用ko.applyBindings()的例子,但这些例子根本不起作用。在ko文档页面上有一个简单的例子,你可以使用一个简单的foreach绑定,将新的li项推送到数组中