未定义的变量使用服务传递数据

时间:2015-10-22 12:59:57

标签: javascript html angularjs service controller

我已宣布我的应用并拥有一个控制器(用于演示目的):

    var module = angular.module("app", [])


    module.controller("modalCtrl", ["$scope", function ($scope, dataService) {


    $scope.printEntity = function () {
         console.log(dataService.getEntityArray());
    }

}]);

一项服务:

module.factory("dataService", function () {

var entityArrayService = [1,2];

return {

    getEntityArray: function () {
        return entityArrayService;
    }

};

});

当我从我的视图中调用$scope.printEntity时,我总是被告知dataService.getEntityArray()未定义。

我已将服务作为依赖项加载,并在return语句之外声明了我的entityArrayService数组。我看起来很高很低的答案,但无济于事。我的目标是在两个控制器之间共享一段数据,但是在那一刻我甚至无法使用一个控制器来检索数据。

4 个答案:

答案 0 :(得分:1)

服务未作为依赖项加载。改变这一行:

module.controller("modalCtrl", ["$scope", function ($scope, dataService) {

到此:

module.controller("modalCtrl", ["$scope", "dataService", function ($scope, dataService) {

答案 1 :(得分:0)

您正在使用严格的依赖声明语法。因此,如果向控制器添加参数,则还必须添加其声明。

module.controller("modalCtrl", ["$scope", "dataService", function ($scope, dataService) { 
    ... 
}

答案 2 :(得分:0)

您没有在控制器中注入dataService。试试:

module.controller("modalCtrl", ["$scope", "dataService", function ($scope, dataService) {
  // ...
});

答案 3 :(得分:0)

缺少控制器中的服务注入:

请更正:

...
module.controller("modalCtrl", ["$scope", "dataService", function ($scope, dataService) {
...

其他代码是正确的。