2013-11-23 8 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

Вы не можете вводить $ сферу в услуги, не что иное, как синглтон $ области.

Но вы можете передать переменные вашей службы или использовать $rootScope если вы интересно использовать $apply.

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

Но я хотел бы вернуться promise и вызвать showTaskDetail в контроллер.

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

У меня только есть ответ. Ты прав. Мне нужно передать переменную $ scope моей службе. Благодаря! – cybaek

+0

вы можете передать '$ rootScope' –

Смежные вопросы