我有两个控制器和一个服务,我正在执行第一个控制器" self / this"在第二个控制器中。我想知道这是一个反模式还是有任何内存泄漏的可能性?
自助服务 - 此服务存储"此" selfContainer对象中的控制器。
setSelf方法有两个参数 - this / self控制器的名称和this / self本身。 - 它将它们存储为selfContainer对象中的键值对。
executeWithSelf方法还有两个参数 - this / self的名称和回调。使用this / self作为参数执行回调。
angular.module('app')
.factory('SelfService', function () {
var selfContainer = {};
function setSelf (selfname , self) {
selfContainer[selfname] = self;
}
function executeWithSelf (selfname, callback) {
callback(selfContainer[selfname]);
}
return {
setSelf: setSelf,
executeWithSelf: executeWithSelf
};
});
FirstController
angular.module('app').controller('FirstController', function(QueryService){
var self = this;
self.counter = 0;
QueryService.setSelf('FirstController', self);
})
第二控制器
angular.module('app').controller('SecondController', function(QueryService){
var self = this;
//execute QueryService.executeWithSelf on any event and only after first controller has loaded
QueryService.executeWithSelf('FirstController', function(firstcontrollerself){
firstcontrollerself.counter++;
});
})