這個問題場景是在使用ionic開發頁面的過程中發現,多個頁面對應的多個controller如何去調用公共方法,比如給ionic引入了toast插件,如何將這個插件的調用變成公共方法或者設置成工具類,因為在每個controller中直接注入這個toast插件顯然不是一個優秀的代碼之道,將來這個toast插件接口變化了咋整?

很顯然我們應該對這個插件的調用進行一層簡單包裝,可以創建一個service,然后在這個service里面包裝這個插件,最后把service注入到controller里面
service.js
angular.module('starter.services', ['ionic-toast'])
.factory('utilService', function(ionicToast) {
return {
//toast plugin api doc: http://market.ionic.io/plugins/ionictoast
toast:function(msg){
ionicToast.show(msg, 'top', false, 2500);
},
showToast:function(msg){
ionicToast.show(msg, 'top', true, 2500);
},
hideToast:function(){
ionicToast.hide();
}
}
})
controller.js

共享數據道理一樣,我們可以定義個dataService的對象來包含共享數據
.factory('dataService', function() {
var itList = [
{ id: 0 },
{ id: 1 },
{ id: 2 },
{ id: 3 },
{ id: 4 },
{ id: 5 },
{ id: 6 },
{ id: 7 },
{ id: 8 },
{ id: 9 },
{ id: 10 }
];
var service={
data:itList,
};
return service;
});
然后在controller里面注入
.controller('ComponentCtrl', function($scope, dataService) {
...
$scope.items = dataService.data;
...
})
