我的代码如下。我的构造函数appVM中的var viewData为null,而在激活时我用一些值填充它。现在我必须使用viewData的激活范围而不是外部范围。我应该为我的自我变量分配什么。
var appVM = function () {
this.viewData = null;
this.subscription = ko.observable();
this.activate = function (viewActivationData) {
var self = this;
self.viewData = viewActivationData.viewData;
};
appVM.prototype.list = function () {
var self = this;
getEmpLists(self.viewData.empId);
};
答案 0 :(得分:0)
您需要搜索有关闭包在JavaScript中如何工作的教程。
以下是解决问题的几种方法:
首先:(为'this'创建一个闭包)
var appVM = function () {
var self = this;
this.viewData = null;
this.subscription = ko.observable();
this.activate = function (viewActivationData) {
self.viewData = viewActivationData.viewData;
};
appVM.prototype.list = function () {
getEmpLists(self.viewData.empId);
};
}
第二:(避免需要关闭)
var appVM = function() {
var viewData = null;
var subscription = ko.observable();
var activate = function(viewActivationData) {
viewData = viewActivationData.viewData;
};
var list = function() {
getEmpLists(viewData.empId);
};
return {
viewData: viewData,
subscription: subscription,
activate: activate,
list: list,
};
}
这只是两个简单的例子。还有其他方法可以解决这个问题,但这些可能是最简单的方法。最终,在控制和理解“这个”时,你需要使用几种不同的技术。