2015-10-13 44 views
0

我有我使用Ajax.actionlink加載在視圖模型js文件淨局部視圖淘汰賽的js

function ViewModel() { 
this.Idnum = ko.observable(); 
this.Name = ko.observable(); 
return this; 
} 
function InitializeViewModel() { 
ViewModel = new ViewModel(); 
ko.applyBindings(ViewModel, $('#vBinder')[0]); 
} 
$(document).ready(function() { 
InitializeCardViewModel(); 
}) 

vBinder用下面的代碼結合的局部視圖是div標籤,其中局部視圖的id裝載 的問題是,一切都在第一個載荷工作正常,但第二負載拋出異常:

TypeError: ViewModel is not a constructor

任何幫助,衷心感謝。

回答

1

你覆蓋視圖模型的定義與視圖模型的實例:

ViewModel = new ViewModel(); 

IE第一負載,它工作正常,但只要這條線運行後,在後續調用,就可以不new ViewModel()因爲ViewModel不再是構造函數,所以再延長一點。爲您的視圖模型的實例使用不同的名稱:

function InitializeViewModel() { 
    var vm = new ViewModel(); 
    ko.applyBindings(vm, $('#vBinder')[0]); 
} 
+0

我照你所表明的,現在我得到的錯誤是 類型錯誤:ViewModel.Idnum不是一個函數 什麼我現在該怎麼辦。不便之處,但我對Knockout完全陌生。 – Venkat

+0

謝謝,你可以在這裏指導我一下 – Venkat

+0

聽起來就像你在調用視圖模型的其他代碼那樣 - 你可能需要將上面的'vm'變量移動到比'InitializeViewModel'函數更廣的範圍,並且然後在其他地方訪問'vm.Idnum'而不是'ViewModel.Idnum'。 –