我有两个不同的虚拟机,每个虚拟机都有一些同名的功能,例如submitRow()
. 如果我从其中一个视图开始并且不离开它,一切都很好,但是一旦我切换到新视图,该视图上的绑定似乎正在引用前一个 VM 上的函数。
显然我可以更改函数名称,但我想知道是否有更好的方法来处理这个问题,或者我什至在某处做错了什么。
我的作曲设置:
<!--ko compose: {
model: router.activeItem,
afterCompose: router.afterCompose,
transition:'entrance',
cacheViews:true
}--><!--/ko-->
一个(简化的)虚拟机:
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
几周前在文档中阅读了该选项后,我忘记了下面评论中提到的选项。似乎关闭它可能会帮助我。但是,对于我的方法的任何其他反馈,我将不胜感激。