2013-04-05 82 views
0

看到这个小提琴:http://jsfiddle.net/BxvVp/11/为什么这个点击绑定没有被绑定?

我创建具有取代了div内容与页面上的一些隐藏内容的功能视图模型。一旦完成,text绑定似乎被处理,但click绑定不是。

我做错了什么?

HTML:

<h4>Clicking the anchor created by clicking 'Summarize' should cause an alert, but doesn't.</h4> 

<a href="#" data-bind="click: summarize">Summarize</a> 

<div id="plot1"></div> 
<div id="summary1" style="display:none;"> <a data-bind="text: 'anchor-text-replaced', click: function(data, event) { alert('anchor clicked!'); }" href="#">anchor-text</a> 

</div> 
<hr /> 

<h4>Clicking this anchor causes the alert as exptected.</h4> 
<div id="plot2"></div> 
<div id="summary2"> 
    <a data-bind="text: 'anchor-text-replaced', click: function(data, event) { alert('anchor clicked!'); }" href="#">anchor-text</a> 
</div> 

的javascript:

var ViewModel = function() { 
    var self = this; 
    self.summarize = function() { 
     $("#plot1").html($("#summary1").html()); 
    }; 
}; 

ko.applyBindings(new ViewModel()); 
+0

你在H4中有一个错字,你还没有关闭它 – Dave 2013-04-05 15:32:28

+0

@Dave - 修正了小提琴和问题。 – ken 2013-04-05 15:37:34

回答

5

淘汰赛只适用绑定当您最初调用ko.applyBindings()任何时间淘汰赛替换包含绑定的foreach块,模板等HTML仅仅因为你插入了一些包含绑定的随机HTML,并不意味着Knockout突然意识到了这一点。

+1

好的。我明白。文本绑定在applyBindings上,所以带有替换文本的HTML在它被显示之前已经存在。我将通过隐藏/显示适当的div来解决这个问题,而不是替换HTML。谢谢! – ken 2013-04-05 15:35:07

相关问题