2013-11-23 89 views
0

如何獲取某個特定控制器的$scope變量?如何在模塊中調用控制器的方法(AngularJS)

myApp.factory('Comment', ['$http', function ($http) { 
     var comment = {}; 

     comment.add = function (shortName, taskNum, message) { 
      // how to call controller's method 
      // the following line dosen't work 
      myApp.ListPanelController.showTaskDetail(shortName, taskNum); 

     } 

     return comment; 
    } 



    myApp.controller('ListPanelController', ['$scope', 'Comment', 
     function ($scope, Comment) { 
      $scope.showTaskDetail = function (shortName, taskNum) { 
       Tasks.get(shortName, taskNum).success(function (data) { 
        // do something 
       }); 
      } 
     }] 
    );  
+0

您需要解釋您的方案。服務是共享代碼\功能和控制器是視圖特定的。應該沒有理由從服務調用控制器功能。 – Chandermani

回答

1

你不能注入$範圍到服務,有沒有像一個單身$範圍。

但是,如果您有興趣使用$apply,您可以將變量傳遞給您的服務或使用$rootScope

myApp.factory('Comment', ['$http', '$rootScope', function ($rootScope,$http){/*..*/} 

但我會回來promise和呼叫showTaskDetail到控制器。

myApp.factory('Comment', ['$http', '$rootScope', function ($rootScope,$http){/*..*/} 
+0

我剛剛得到了答案。你是對的。我必須將$ scope變量傳遞給我的服務。謝謝! – cybaek

+0

你可以傳遞'$ rootScope' –

相關問題