我正在尝试更新淘汰视图模型,但每次我尝试推送到一个可观察数组时,它都会给我一个错误,即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调用时,它会失败。有人能指出我正确的方向吗?
答案 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);
}
}