【问题标题】:observableArray bound table does not update when inside a jQuery UI dialog在 jQuery UI 对话框中时 observableArray 绑定表不更新
【发布时间】:2012-06-09 07:38:11
【问题描述】:

我正在尝试创建一个带有按钮的页面,单击该按钮会打开一个模式对话框,允许用户搜索产品并将选定的搜索结果添加到订单中。

我已经创建了我认为可行的 (jsfiddle sample),但是绑定到 observableArray 的搜索结果表没有更新。

如果我从<div id="myDialog"/> 中删除data-bind 属性,则搜索结果表会正确更新。

此外,即使在 @实际实现中的987654322@回调。

我哪里错了?

(我已经发布了我所有的代码here。)

更新:

Knockout foreach 绑定似乎无法看到对 observableArray 的更新。我创建了自己的绑定 (updated jsfiddle sample) 模板,它几乎可以满足我的要求,但不是很令人满意。

如何让foreach 绑定识别集合何时更改?

【问题讨论】:

    标签: jquery asp.net-mvc-3 knockout.js coffeescript


    【解决方案1】:

    这是您的损坏示例,稍作修改以在 setTimeout 中调用 .dialog()http://jsfiddle.net/rniemeyer/YuV55/5/。 jQuery UI 对话框功能将元素移动到页面底部,因此当ko.applyBindings 的初始传递第二次命中它时,它可能会弄乱绑定。

    这是另一个调用ko.applyBindings 特定于容器元素(没有setTimeout)的示例:http://jsfiddle.net/rniemeyer/YuV55/6/。这意味着ko.applyBindings 不会第二次点击移动的对话框,因为它将位于容器元素之外。

    【讨论】:

    • 太棒了,容器元素就像一个魅力。这比我的选择要好得多,而且正是我想要的。非常感谢。
    【解决方案2】:

    经过大量测试,我认为不可能在绑定到视图模型的 jQuery UI 对话框中使用绑定到 observableArrayforeach - 其他绑定,例如text,绑定到 observable 似乎工作正常。

    这个broken sample 使用一个绑定到视图模型的对话框,该对话框是我根据here 找到的样本(我认为)。

    这个sample 完成了我想要的。然而,对话框并没有绑定到视图模型,而是将点击处理程序连接到按钮以启动对话框(取自 article)。

    效果很好,我对结果很满意。

    【讨论】:

      猜你喜欢
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      相关资源
      最近更新 更多