2013-06-21 63 views
0

我正在嘗試更新基坑視圖模型,但每次嘗試推送到可觀察數組時,都會給我一個AuditViewModel未定義的錯誤。正在更新Knockout視圖Model

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

請注意,行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); 
    } 
}