为什么这个点击绑定没有绑定?

时间:2013-04-05 15:22:05

标签: jquery mvvm knockout.js

看到这个小提琴: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());

1 个答案:

答案 0 :(得分:5)

Knockout仅在您最初调用ko.applyBindings()时应用绑定,并且 Knockout 随时替换包含绑定,foreach块,模板等的HTML。仅仅因为您插入了一些包含绑定的随机HTML ,并不意味着Knockout突然意识到这一事实。