0

我正在尝试更新淘汰视图模型,但每次我尝试推送到可观察数组时,它都会给我一个错误,即 AuditViewModel 未定义。

function (data, update) {
        if (update == false) {
            var AuditViewModel = {
                auditEvents: ko.observableArray(data.requirements)
            };

            ko.applyBindings(AuditViewModel);
        } else {
            AuditViewModel.auditEvents.push(data.requirements);
        }
    }

在页面加载时,此函数始终以 update == false 运行,并且最初填充视图模型。当我稍后使用 update ==true 调用时,它会失败。有人可以指出我正确的方向吗?

4

1 回答 1

1

请注意,该行var AuditViewModel = { ... }仅在update == false. 因为 AuditViewModel 是一个局部变量,如果你稍后调用该函数 when update == true,AuditViewModel 将是未定义的。

您需要将视图模型存储在其他地方,即:window.AuditViewModel = { ... }.

例子:

function (data, update) {
    if (update == false) {
        window.AuditViewModel = {
            auditEvents: ko.observableArray(data.requirements)
        };

        ko.applyBindings(window.AuditViewModel);
    } else {
        window.AuditViewModel.auditEvents.push(data.requirements);
    }
}
于 2013-06-21T15:19:03.187 回答