AngularJS将数据服务注入版本1.3.8的控制器

时间:2015-01-25 23:57:58

标签: angularjs

我正在运行一个教程,但他们在1.3.8之前使用的是AngularJS版本。

我的代码中缺少什么,因此可以注入此数据服务?

他们使用以下代码将服务注入控制器:

var myApp = angular.module('myApp', []);

myApp.factory('Data', function () {
    return { message: "I'm data from a service" };
});

function FirstCtrl($scope, Data) {
    $scope.data = Data;
}

function SecondCtrl($scope, Data) {
    $scope.data = Data;
}

以下是我正在尝试更改的代码,因此可行:

var myApp = angular.module('app', []);
myApp.factory('Data', function(){
    return {message:"Data from service"}
});

angular.module('app', Data)
.controller('FirstController', ['$scope', function($scope) {
   $scope.data = Data;
}])
.controller('SecondController', ['$scope', function($scope) {
    $scope.data = {message: "panel"};
}]);

3 个答案:

答案 0 :(得分:2)

您必须在控制器@ Data中注入.controller('FirstController', ['$scope', 'Data', function($scope, Data) { not list作为模块依赖项@ angular.module('app', Data)。有关详细信息和其他选项,请参阅official DI documentation

angular.module('app')
.controller('FirstController', ['$scope', 'Data', function($scope, Data) {
   $scope.data = Data;
}])
.controller('SecondController', ['$scope','Data', function($scope, Data) {
    $scope.data = {message: "panel"};
}]);

答案 1 :(得分:2)

当您使用angular.module('app')获取已创建的模块时。您不应该尝试将Data工厂注入模块,而是注入控制器。

angular.module('app')
.controller('FirstController', ['$scope', 'Data', function($scope, Data) {
   $scope.data = Data;
}])
.controller('SecondController', ['$scope', 'Data', function($scope, Data) {
    $scope.data = {message: "panel"};
}]);

答案 2 :(得分:1)

使用此:

angular.module('app')
.controller('FirstController', ['$scope', function($scope, Data) {
   $scope.data = Data;
}])
.controller('SecondController', ['$scope', function($scope, Data) {
    $scope.data = {message: "panel"};
}]);