2015-10-13 50 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'。 –