目前我在每个控制器中都有$ 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);
};
})();
答案 0 :(得分:0)
您有两个选择:
1)将其用作服务
它可能不适合你,因为你的服务不知道ionicMaterialMotion
是什么,你应该为它添加一个依赖。
2)作为全局JavaScript文件中的函数。
只需将函数放在一些普通的JavaScript文件中,并将其包含在index.html
中。然后你可以从任何地方打电话。
答案 1 :(得分:0)
你可以做下一个:
yourApp.controller("generalController", function($scope) {
// Your code.
});
yourApp.controller("singleController", function($scope, $controller){
/* Extend generalController*/
$controller('generalController', {
$scope: $scope
});
});