如果绑定,我遇到了 knockoutjs 的问题。我非常自由地使用绑定,因为它允许我在绑定中引用子属性而不会出错。
引起关注的一个原因是在 if 绑定添加的 DOM 元素上注册事件处理程序等。基本上,当 if 绑定添加的元素添加到 DOM 时,我需要获取回调。我曾尝试使用 livequery jquery 插件,但似乎元素被添加了两次。我想出了一些示例代码来展示这一点。
淘汰赛文档明确指出:
“然而,if 绑定在物理上添加或删除 DOM 中包含的标记,并且仅在表达式为真时才将绑定应用于后代。”
http://knockoutjs.com/documentation/if-binding.html
但是在下面的代码中,内联脚本中的警报被执行:
JS:
var vm = {
val: ko.observable(false),
someText: ko.observable("some text"),
};
ko.applyBindings(vm, document.getElementById("d1")
HTML:
<div id="d1" data-bind="if: val">
<span data-bind="text: someText"></span>
<script>alert("here")</script>
</div>