全局设置功能的正确方法是什么,以便它可以在所有控制器中使用
What is the right way of setting function globally so its usable in all the controllers
目前我在每个控制器中都有 $timeout 函数,我真的想把它放在我可以在全球范围内随处使用的地方。有人提到最好将其作为一项服务。这是这样做的正确方法吗?如果是这样,我该如何更改它的结构以使其适合服务。
(function () {
'use strict';
angular
.module('app')
.controller('MenuController', MenuController);
MenuController.$inject = ['navigationService', 'dealService', '$scope', '$timeout', 'ionicMaterialInk', 'ionicMaterialMotion'];
function MenuController(navigationService, dealService, $scope, $timeout, ionicMaterialInk, ionicMaterialMotion) {
// Set Header
$scope.$parent.$parent.$parent.showHeader();
$scope.$parent.$parent.$parent.clearFabs();
$scope.$parent.$parent.$parent.setExpanded(false);
$scope.$parent.$parent.$parent.setHeaderFab(false);
// Delay expansion
$timeout(function () {
ionicMaterialMotion.slideUp({
selector: '.slide-up'
});
}, 300);
var vm = this;
vm.menuItems = [];
navigationService.getAllNavigations()
.success(function (data, status, headers, config) {
vm.menuItems = data;
$timeout(function () {
// Set Motion
ionicMaterialMotion.fadeSlideInRight();
// Set Ink
ionicMaterialInk.displayEffect();
}, 100);
});
dealService.setCurrentDeal();
};
})();
目前我有这个,但它不起作用!
(function () {
'use strict';
angular
.module('app')
.service('globalService', globalService);
function globalService($http, restServer) {
var globalService = {
timeout: timeout()
};
return globalService;
// Delay expansion
$timeout(function () {
ionicMaterialMotion.slideUp({
selector: '.slide-up'
});
}, 300);
};
})();
您有 2 个选择:
1) 将其用作服务
它可能不适合你,因为你的服务不知道 ionicMaterialMotion
是什么,你应该向它添加一个依赖项。
2) 作为全局 JavaScript 文件中的函数。
只需将一个函数放入某个普通的 JavaScript 文件中,然后将其包含在您的 index.html
中。然后你可以从任何地方调用它。
您可以执行下一步:
yourApp.controller("generalController", function($scope) {
// Your code.
});
yourApp.controller("singleController", function($scope, $controller){
/* Extend generalController*/
$controller('generalController', {
$scope: $scope
});
});
目前我在每个控制器中都有 $timeout 函数,我真的想把它放在我可以在全球范围内随处使用的地方。有人提到最好将其作为一项服务。这是这样做的正确方法吗?如果是这样,我该如何更改它的结构以使其适合服务。
(function () {
'use strict';
angular
.module('app')
.controller('MenuController', MenuController);
MenuController.$inject = ['navigationService', 'dealService', '$scope', '$timeout', 'ionicMaterialInk', 'ionicMaterialMotion'];
function MenuController(navigationService, dealService, $scope, $timeout, ionicMaterialInk, ionicMaterialMotion) {
// Set Header
$scope.$parent.$parent.$parent.showHeader();
$scope.$parent.$parent.$parent.clearFabs();
$scope.$parent.$parent.$parent.setExpanded(false);
$scope.$parent.$parent.$parent.setHeaderFab(false);
// Delay expansion
$timeout(function () {
ionicMaterialMotion.slideUp({
selector: '.slide-up'
});
}, 300);
var vm = this;
vm.menuItems = [];
navigationService.getAllNavigations()
.success(function (data, status, headers, config) {
vm.menuItems = data;
$timeout(function () {
// Set Motion
ionicMaterialMotion.fadeSlideInRight();
// Set Ink
ionicMaterialInk.displayEffect();
}, 100);
});
dealService.setCurrentDeal();
};
})();
目前我有这个,但它不起作用!
(function () {
'use strict';
angular
.module('app')
.service('globalService', globalService);
function globalService($http, restServer) {
var globalService = {
timeout: timeout()
};
return globalService;
// Delay expansion
$timeout(function () {
ionicMaterialMotion.slideUp({
selector: '.slide-up'
});
}, 300);
};
})();
您有 2 个选择:
1) 将其用作服务
它可能不适合你,因为你的服务不知道 ionicMaterialMotion
是什么,你应该向它添加一个依赖项。
2) 作为全局 JavaScript 文件中的函数。
只需将一个函数放入某个普通的 JavaScript 文件中,然后将其包含在您的 index.html
中。然后你可以从任何地方调用它。
您可以执行下一步:
yourApp.controller("generalController", function($scope) {
// Your code.
});
yourApp.controller("singleController", function($scope, $controller){
/* Extend generalController*/
$controller('generalController', {
$scope: $scope
});
});