2013-11-23 42 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' –

相关问题