我正在使用最新版本的 knockout.js 和 jquery。我正在尝试创建一个 jquery 对话框,只要特定的 ko.observable 具有值,该对话框就会打开和关闭。我的实现基于此 jsfiddle 中的代码 http://jsfiddle.net/rniemeyer/WpnTU/,我在此 Knockout.js 论坛https://groups.google.com/d/msg/knockoutjs/中找到了该代码XIaQMNHjy7Q/BpfDU5inKVQJ。
但是,这种方法仅在我包含现已弃用的 jquery-tmpl.js 插件(版本 1.0.0pre)时才有效。我将我的问题提炼为两个 jsfiddle,一个工作版本(http://jsfiddle.net/LhEnV/29/)和一个损坏的版本(http://jsfiddle.net/gygh3/1/)。唯一的区别是 jquery-tmpl.js 不包含在第二个版本中。
问题的根源是对话框及其内容所依赖的可观察对象在我第一次加载页面时没有设置。因此,模板绑定的属性不可用,从而导致错误。在淘汰赛之前包括 jquery-tmpl 可以解决问题,所以我假设淘汰赛模板引擎会在 jquery-tmpl 可用时改变它的行为。但是,我不想依赖已弃用的插件。
是否有更好的方法将 jquery UI 对话框及其内容绑定到 ViewModel?