我有两个不同的虚拟机,每个虚拟机都有一些具有相同名称的功能,例如submitRow()
。如果我从其中一个视图开始并且不离开它,一切都很好,但是一旦切换到新视图,该视图上的绑定似乎引用了前一个VM上的功能。
显然我可以更改函数名称,但我想知道是否有更好的方法来处理它,或者我是否在某处做错了。
我的作品设置:
<!--ko compose: {
model: router.activeItem,
afterCompose: router.afterCompose,
transition:'entrance',
cacheViews:true
}--><!--/ko-->
(简化)VM:
define([...all my modules...],
function(router, app, utils, ol, config, usercontext, datacontext) {
var
/* VIEW-LEVEL VARIABLES */
currentUserName = ko.observable();
PIGCode = ko.observable("");
PIGCode.isValid = ko.observable(true);
// lots more variables...
/* DATA ACCESS METHODS */
getOrderData = function(callback) {
// get me my data...
};
// lots more methods...
return {
PIGCode: PIGCode,
getOrderData: getOrderData,
// all the other things I want to publicly expose
};
});
我几周前在文档中阅读过这篇文章后,我已经忘记了下面评论中提到的cacheViews
选项。看起来关闭它可能会帮助我。但是,我很欣赏有关我的方法的任何其他反馈。
答案 0 :(得分:1)
我认为你正在不正确地定义你的变量,因此,它们的全局范围就像评论中提到的@Yogesh一样。我在您的示例中只看到一个var
关键字,但您在每个变量声明后都使用分号而不是逗号。
function () {
var one = 1; // function scoped
two = 2; // global scoped
three = 3; // global scoped
var four = 4, // function scoped
five = 5, // function scoped
six = 6; // function scoped
}