2015-06-10 59 views
0

是否良好的做法是使用angular.element("ng-controller="someCtrl"]").scope()而不是使用工廠來處理使用依賴注入控制器之間的數據流。這裏的問題是,我想打電話給另一個控制器的功能,所以有兩種方法要麼我把它放在一個工廠,然後重新使用控制器之間也可以使用上面的語法來直接調用該函數。是好的做法是使用angular.element(「[NG-控制器=」 someCtrl「]」)。範圍()

回答

2

如果需要調用其他控制器的功能,它應該是一個服務/工廠。這樣,您將在控制器之間共享代碼,並且您將通過良好實踐進行編碼。

正如他們在angularjs docs

角度服務是使用依賴注入(DI)連接在一起 替代對象。您可以使用服務來整理應用程序中的代碼並分享其中的代碼。

然後,你只需要創建一個服務或工廠

//The service 
angular.module('myApp') 
    .service('serviceName', function ($http, $scope, socket) { 
//This functions will be available in your controller 
    return { 
     list: function() { 
     $http.get(listUrl).success(function (lista) { 
      $scope.centerList = lista; 
      socket.syncUpdates('center', $scope.centerList); 
     }); 
     } 
    }; 
    }); 

//The controller 
angular.module('myApp').controller('myCtrl', function ($scope, centerService) { 

$scope.listCenters = function() { 
    centerService.list(); 
}; 
}); 

只是爲了澄清,並添加關於服務和工廠的一些綜合性的想法:

2

這是從來沒有很好的做法,從控制器訪問DOM。因此,如果將該方法包裝在工廠/服務中是一種選擇,那麼我會說這是要走的路。

相關問題