我有,我想数据绑定使用一个div HTML标记的块淘汰赛JS 。 这是淘汰赛很简单html
结合。
我今天准备这样做的条件是,HTML标记内绑定子元素的基础上,他们的阶级。 这些元素可以在HTML标记内的任何地方出现,因为它们是内联元素(如span
, a
标签等)。
这样做的目的是为了这个数据绑定文本块中点击事件,以特定的词或短语,这样我可以调用一个函数(在这种情况下,与目标词或短语的定义的模式)。
有谁知道如何做到这一点? 从我所看到的,我有两个主要途径来探讨:
使用jQuery抢按类元素,并以某种方式对数据绑定,然后在事后。 我不知道这是否会因为各种原因工作 - 不具有DOM准备好了,不能够在法等进行数据绑定
利用基因敲除的模板绑定 ,并添加afterRender
模板回调解析为元素的文本块,并相应databinds他们。
上述两种的组合。 (是的,我知道,这三大途径。)
有没有人做过这样的事之前? 我希望得到您的建议和反馈,如果可能的话。 谢谢!
除非你确信你是绑定到HTML是安全的,我不推荐这种方法。 在HTML结合这个样子的。
ko.bindingHandlers['html'] = {
'init': function() {
// Prevent binding on the dynamically-injected HTML
// (as developers are unlikely to expect that, and it
// has security implications)
return { 'controlsDescendantBindings': true };
},
'update': function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
ko.utils.setHtml(element, value);
}
};
看着这个你可以写一个HTML2结合
ko.bindingHandlers['html2'] = {
'init': function() {
return { 'controlsDescendantBindings': false };
},
'update': function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
ko.utils.setHtml(element, value);
}
};
http://jsfiddle.net/madcapnmckay/LDtuF/1/
要小心,要确保HTML无法使用不安全的目的。
希望这可以帮助。
文章来源: Programmatically apply Knockout bindings to specific tags within a text block