似乎无法将数据从一个控制器传递到另一个控制器

时间:2015-04-22 17:27:24

标签: angularjs node.js angularjs-service

问题是我似乎无法从控制器1向控制器2发送信息......我的服务设置/获取数据但它无法正常工作。我得到的实际错误是Controller 1的dataService.getData不是函数......当它在其他地方工作时。

服务1(在自己的文件中)

app.service('dataService', function() {
    var data, queried;
    return {
        setData: function(queryData) {
            this.data = queryData;
            this.queried = false;
        },
        getData: function() {
            this.queried = true;
            return this.data;
        }
    }; 
});

控制器1(发送信息)

app.controller('MyCtrl', ['$scope', '$location', '$state', function($scope, $location, $state, dataService) {
    anotherService.functionName(function(err, data) {
        // do some things here
        actualService.doesntWork(function(err, data) {
            if (!err) {
                var query = {};
                query.someField = data.someField;
                dataService.setData(query);
                $state.go("go.somewhere.else");
            }
        });
    });
}]);

控制器2(获取信息)

app.controller('MyCtrl2', ['$scope', '$location', '$state', function($scope, $location, $state, dataService) {
    $scope.buttonPressed = function() {
        console.log(dataService.getData());
    }
}]);

1 个答案:

答案 0 :(得分:1)

您未在dataService&内注入服务MyCtrlMyCtrl2,确保在使用之前注入依赖关系。

<强>控制器

app.controller('MyCtrl', ['$scope', '$location', '$state','dataService', //<-added dependency here
   function($scope, $location, $state, dataService) {
    anotherService.functionName(function(err, data) {
        // do some things here
        actualService.doesntWork(function(err, data) {
            if (!err) {
                var query = {};
                query.someField = data.someField;
                dataService.setData(query);
                $state.go("go.somewhere.else");
            }
        });
    });
}]);

<强>控制器2

app.controller('MyCtrl2', ['$scope', '$location', '$state','dataService',//<-added dependency here 
  function($scope, $location, $state, dataService) {
    $scope.buttonPressed = function() {
        console.log(dataService.getData());
    }
}]);