如何在模块中调用控制器的方法(AngularJS)

时间:2013-11-23 12:49:04

标签: angularjs

如何获取某些特定控制器的$scope变量?

    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
                });
            }
        }]
    );      

1 个答案:

答案 0 :(得分:1)

  

你不能将$ scope注入服务,没有什么比单例$ scope更好了。

但是,如果您有兴趣使用$rootScope,则可以将变量传递给您的服务或使用$apply

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

但我会返回promise并将showTaskDetail称为控制器。

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