2013-04-05 117 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

相關問題