javascript - 从另一个 View 模型更新Knockout Observable Array

标签 javascript mvvm knockout.js

这似乎是一个复杂的场景。但我会尝试将其简单地分解。

在 View 模型中,我有一个绑定(bind)到下拉列表的可观察数组。

(function () {
    UserMgmt.PeopleViewModel = WebFramework.BaseViewModel.inherits({

    initializeViewModel: function (options) {
        this.initializeBinding(options);
    },
    initializeBinding: function (options) {
        .......
        .......
        this.intGroups = ko.observableArray([]);
        .......
        getGroupsForSite: function (cb) {
            this.setListValue('/GetGroupsForSite', { siteId: '123', startIndex: 0, maxRecordCount: 20 }, this.intGroups, cb);
        },
        setListValue: function (api, data, observable, cb) {
            this.postDataRequest(api, data, function (err, result) { //Gets teh data from service
                if (!err && result) {
                    observable(result.data);
                    if (cb) { cb(); }
                }
            });
        },
    ....
)},

现在,从此页面将打开一个弹出窗口,其中具有不同的 View 模型,您可以在其中保存新的组信息。

但是在关闭模式弹出窗口时,previpus 页面的 下拉值需要更新 使用此保存的值

我可以通过 observableArray 来实现吗?

这样,我就可以从这个新的 View 模型进行更新,而无需重新加载整个上一页,它仅更新下拉列表?

这是第二个 View 模型......

   UserMgmt.IntrusionGroupListViewModel = WebFramework.BaseViewModel.inherits({
    initializeViewModel: function (options) {
        this.initializeBinding(options);
    },
    initializeBinding: function (options) {
        this.ErrorMessage = ko.observable("");
        this.IsError = ko.observable(false);


        SaveNewGroup: function () {

            debugger;
            //this.setListValue('/GetGroupsForSite', { siteId: '123', startIndex: 0, maxRecordCount: 20 }, this.intGroups, cb);
        }
}

如何实现所需的功能?

SaveNewGroup() 中应该包含什么内容才能使其正常工作?

最佳答案

实例化两个 View 模型的代码应将第一个 View 模型或其 intGroups 成员作为选项之一传递给第二个 View 模型。然后第二个 View 模型就可以访问它需要的内容。您可以修改可观察数组,更改将显示在 View 中。

如果由于某种原因,没有了解这两个 View 模型的代码,您将需要使用 Postbox两者之间进行通信。

关于javascript - 从另一个 View 模型更新Knockout Observable Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39742859/

相关文章:

mvvm - ViewModel 到 ViewModel 的通信

wpf - 如何按显示的转换值而不是绑定(bind)的源属性值对 DataGridTextColumn 进行排序?

javascript - 可观察数字的 knockout 条件格式不起作用

javascript - SignalR 从集线器客户端方法更新 knockout 模型的更好方法

javascript - 如何使用 jquery 从 url 获取 div?

javascript - 如何使用 angular ui bootstrap 设置默认格式日期

javascript - 在 JavaScript 中获取数组时出现问题 TypeError : Cannot set property

c# - 使用 MVVM 和 Message 在 Windows Store 中编辑 XML

javascript - Knockout click binding - 阻止除被点击元素之外的所有元素的绑定(bind)

javascript - 如何在值字段中引用 JavaScript 变量?