我开始写这个问题,想知道当一个可观察属性被另一个视图模型更改时如何触发查找函数,现在我在质疑我是如何解决这个问题的。无论如何,这是我的场景:
我有一个页面,上面有一个项目网格。用户单击一个按钮来编辑一个项目,我们会显示一个编辑弹出窗口,其中包含所有原始数据以及不在主网格对象中的有关该记录的详细数据。
在编辑窗口中,我对数据的“工作副本”有一个单独的 observable。当用户通过单击保存按钮提交更改时,我的计划是将其复制到原始对象,以便更改反映在网格中。
现在我正在使用 ko.postbox 库在两个视图模型之间进行通信。两者都包含一个可观察的来存储已选择并使用“syncWith”保持同步的项目。
这是它的样子:
function MainVM()
{
self = this;
this.Item = ko.observable().syncWith("GridItem");
this.Edit = function (item)
{
self.Item(item);
}
}
function EditVM()
{
self = this;
this.SelectedItem = ko.observable().syncWith("GridItem");
this.WorkingItem = ko.observable();
this.RetrieveGridItemDetails = function (id)
{
// Ajax lookup to populate WorkingItem
}
}
当用户单击以编辑项目时...我希望将所选项目发布到编辑窗口 vm(已经使用 syncWith 发生),然后还执行 AJAX 查找以提取有关该项目的其余信息(没有想法如何做到这一点)。
我已经查看了手动订阅那个特定的 observable,以及在编辑窗口视图模型中使用计算的 observable 来调用单独的查找函数,但到目前为止我一直无法找到一个可行的解决方案: (
我目前的思路是不是走错了路,或者有人知道我该如何进行查找吗?