【问题标题】:Why is this click binding not being bound?为什么这个点击绑定没有被绑定?
【发布时间】:2013-03-28 02:05:36
【问题描述】:

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

【问题讨论】:

  • 你的H4有错别字,你还没有关闭它
  • @Dave - 修正了小提琴和问题。

标签: jquery mvvm knockout.js


【解决方案1】:

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

【讨论】:

  • 好的。我明白。文本绑定在 applyBindings 上,因此带有替换文本的 HTML 在显示之前就已经存在。我将通过隐藏/显示适当的 div 而不是替换 HTML 来解决此问题。谢谢!
猜你喜欢
  • 2018-07-21
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多