为什么我们不能添加$ scope作为角度服务的参数?

时间:2017-05-18 16:23:03

标签: angularjs

我试过以下代码

这是我的服务

angular.module('DriverApp').service('driverservice',['$scope',function ($scope) {

 $scope.drivers = [{
    firstName: 'John',
    lastName: 'Smith',
    birthday: '2000-10-01',
    vehicle: 'Nissan-GTR',
    ranking: 1
}, {
    firstName: 'Mike',
    lastName: 'Black',
    birthday: '2002-06-12',
    vehicle: 'Merc SLK 500',
    ranking: 2
}];

returnDriver=function(){
    return $scope.drivers;
}

}]);

这是我的控制器

angular.module('DriverApp').controller('MainController',['$scope','driverservice',function (driverservice,$scope) {

$scope.getDrivers=driverservice.returnDriver();

}]);

但是在控制台中显示错误

enter image description here

2 个答案:

答案 0 :(得分:2)

您无法在服务或工厂中使用$scope$scope允许您将控制器操作绑定到视图,反之亦然。控制器是遵循传统MVC模式的唯一用于与视图交互的东西。

您的服务只应用于向控制器提供数据或从控制器提供数据。

阅读AngularJS Documentation以了解$scope的工作原理。

答案 1 :(得分:1)

您可以将$ scope作为参数从控制器传递到下面

$scope.drivers = 10;
 driverservice.save(drivers).success(function() { 
           alert('saved successfully!!!'); 
       }).error(function(){
           alert('something went wrong!!!');
       });

在您的driverservice服务中,定义保存功能:

angular.module('DriverApp').service('driverservice',['$http',function ($http) {
    this.save = function(drivers){
        //Do stuffs
    }
}