Angularjs調用公共方法與共享數據


 

  這個問題場景是在使用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;
    ...
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM