如何在模块中调用控制器的方法(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
                });
            }
        }]
    );      

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

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

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

但我会返回promise并将showTaskDetail调用到控制器中。

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

最新更新