angular.js - angular 將$scope傳入service
我想大声告诉你
我想大声告诉你 2017-05-15 16:50:23
0
4
680
app.contronller('xxx', ['$scope', 'service', function($scope, service) {
    $scope.xxx = 'xxxx';

    service.say($scope);
}]);

app.service('xxx', [function() {
    this.say = function($scope) {
    }
}]);

現在維護的程式碼裡好多這樣的情形,這是不是錯誤的用法?感覺用起來很爽,但是程式碼好混亂

我想大声告诉你
我想大声告诉你

全部回覆(4)
左手右手慢动作

這明顯是偷懶的做法,造成service的方法的含義非常模糊,你傳$scope進去,真正用哪個參數完全體現不出來。
而且造成service方法對$scope不必要的依賴。

黄舟

嚴格來說,service裡面不應該處理非全域性的狀態值,尤其是修改。這裡就是$scope。換個意思是說,這裡service類似接口,應該明確函數的參數列表,而不是籠統的參數。

app.contronller('xxx', ['$scope', 'service', function($scope, service) {
    $scope.xxx = 'xxxx';
    service.say($scope.xxx);
}]);
app.service('xxx', [function() {
    this.say = function(word) {
}}]);

當然類似$location,$rootScope 之類的全域變量,因為不需要透過其他元件傳遞過來,自身就可以透過注入獲取得的到,是可以使用的。

某草草

去看我的部落格 用回呼參數傳遞

小葫芦

其實我測試的時候發現如果你在服務中返回值給控制器中的$scope ,閉包貌似不起作用,然而傳$scope進去直接在服務中更新控制器中的$scope, 這樣很好用

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板