我想在我的應用程序中共享這樣的功能,爲此我有幾個工廠。問題是我必須在需要的時候在每個控制器中添加所有這些工廠。隨着工廠數量的不斷增加,控制器這種繁瑣的任務!
因此,我試圖找到一種方法來減少這種冗餘。在SO瀏覽了一樣,我碰到以下問題:
Can I make a function available in every controller in angular?
這是我期待的,而下面的答案尋找最適合我:
https://stackoverflow.com/a/24714658/3375368
現在我想先走一步,刪除需要插入$rootScope
!
<!doctype html>
<html ng-app="myApp">
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.angularjs.org/1.1.2/angular.min.js"></script>
<script type="text/javascript">
var myApp = angular.module('myApp', []);
myApp.factory('myService', function() {
return {
foo: function() {
alert("I'm foo!");
}
};
});
myApp.run(function($rootScope, myService) {
$rootScope.appData = myService;
});
myApp.controller('MainCtrl', ['$scope', '$rootScope', function($scope, $rootScope){
appData.foo() //This wont work
$rootScope.appDate.foo() //This will work
//Is there a way to remove dependancy on $rootScope??
}]);
</script>
</head>
<body ng-controller="MainCtrl">
<button ng-click="appData.foo()">Call foo</button>
<!-- This works, but I wont be using this, its from original post -->
</body>
</html>
另一個問題是,這種做法是否是好? &它將如何影響工廠數據共享的工作,即是否有任何缺陷?
或許不是一個好主意,讓你的觀點直接調用你的服務。爲什麼要刪除'$ rootScope'依賴項? – JLRishe
@JLRishe,如果可能的話減少注入依賴 – demonofthemist
@JLRishe我對angularjs很陌生,剛開始深入探索它,如果這是做事情的恰當方式,那麼我對它很好,我只是好奇如果我可以用其他方式完成,結果是什麼! – demonofthemist