当我的应用程序结束时(例如关闭导航器选项卡时)我需要执行某些控制器的功能,所以我想在服务中管理这些功能的列表并在需要时调用它们。这些功能会根据我打开的控制器而改变。
这是一些代码
控制器1
angular.module('myApp').component('myComponent', {
controller: function ($scope) {
var mc = this;
mc.saveData = function(objectToSave){
...
};
}
});
控制器2
angular.module('myApp').component('anotherComponent', {
controller: function ($scope) {
var ac = this;
ac.printData = function(objects, priority){
...
};
}
});
如果考虑到它们有不同的参数,如何存储这些函数(saveData& printData),所以当我需要它时,我可以调用它们(myComponent.saveData& anotherComponent.printData)。
答案 0 :(得分:0)
上述代码不是通用//uncomment for multiple file upload
echo $form->field($model, 'image[]')->widget(FileInput::classname(), [
'options'=>['accept'=>'image/*', 'multiple'=>true],
]);
,而是controller
具有自己的控制器范围。因此,方法angular1.5+ component
只能在相应的组件HTML模板中访问。
因此,要在应用程序的任何地方使用上述方法,它们应该是某些saveData and printData
的一部分,并且需要在您需要的任何地方注入。
您可以创建以下服务:
service\factory
并将其注入您需要的任何地方,例如在您的组件中:
angular.module('FTWApp').service('someService', function() {
this.saveData = function (objectToSave) {
// saveData method code
};
this.printData = function (objects, priority) {
// printData method code
};
});
答案 1 :(得分:0)
我设法做到这一点,创建了一个服务来管理将被解雇的方法。
angular.module('FTWApp').service('myService',function(){
var ac = this;
ac.addMethodForOnClose = addMethodForOnClose;
ac.arrMethods = [];
function addMethodForOnClose(idModule, method){
ac.arrMethods[idModule] = {
id: idModule,
method: method
}
};
function executeMethodsOnClose(){
for(object in ac.arrayMethods){
ac.arrMethods[object].method();
}
});
然后在控制器中,只需添加该数组所需的方法:
myService.addMethodForOnClose(id, vm.methodToLaunchOnClose);
之后,捕获$window.onunload
并运行myService.executeMethodsOnClose()