如何获取特定控制器的$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){/*..*/}