更新Knockout viewModel

时间:2013-06-21 14:56:13

标签: javascript jquery knockout-2.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调用时,它会失败。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

请注意,var AuditViewModel = { ... }行仅在update == false时执行。因为AuditViewModel是一个局部变量,如果稍后在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);
    }
}