Javascript TypeError:无法读取属性';添加主题';未定义的。我瞎了吗?

Javascript TypeError:无法读取属性';添加主题';未定义的。我瞎了吗?,javascript,angularjs,Javascript,Angularjs,因为我已经关注这个问题好几天了,我对AngularJS有点陌生,我想也许这里有人可以帮我。所以我的问题是: 当我试图在我正在创建的论坛上保存一个新主题时,我遇到一个类型错误:我的控制器 module.controller('newTopicController', ['$scope', '$http', 'dataService', function ($scope, $http, $window, dataService) { $scope.newTopic = {}; $scope.sav

因为我已经关注这个问题好几天了,我对AngularJS有点陌生,我想也许这里有人可以帮我。所以我的问题是:

当我试图在我正在创建的论坛上保存一个新主题时,我遇到一个类型错误:我的控制器

module.controller('newTopicController', ['$scope', '$http', 'dataService', function ($scope, $http, $window, dataService) {
$scope.newTopic = {};

$scope.save = function () {

    dataService.addTopic($scope.newTopic)
    .then(function () {
        $window.location = "/#";
    },
    function () {
        alert("couldnt save topic");
    });
};
}]);
我的工厂:

module.factory("dataService", function ($http, $q) {

var _topics = [];
var _isInit = false;

var _isReady = function () {
    return _isInit;
};

var _getTopics = function () {

    var deferred = $q.defer();

    $http.get("/api/topics?withReplies=true")
    .then(function (result) {
        angular.copy(result.data, _topics);
        _isInit = true;
        deferred.resolve();
    },
    function () {
        deferred.reject();
    });

    return deferred.promise;
};

var _addTopic = function (newTopic) {
    var deferred = $q.defer();

    $http.post("/api/topics", newTopic)
   .then(function (result) {
       var createdTopic = result.data;
       _topics.splice(0, 0, createdTopic);
       deferred.resolve(createdTopic);
   },
   function () {
       deferred.reject();
   });

    return deferred.promise;
};

return {
    topics: _topics,
    getTopics: _getTopics,
    addTopic: _addTopic,
    isReady: _isReady
};
});
因此,当我尝试向论坛添加主题时,我只会在控制器中得到“TypeError:无法读取未定义的属性'addTopic',就在dataService.addTopic($scope.newTopic)所在的位置

我还有另外一个控制器也在使用工厂,但这不应该是个问题,对吗

谢谢您的时间。

这似乎不正确:

module.controller('newTopicController', ['$scope', '$http', 'dataService', function ($scope, $http, $window, dataService) {...}
将其更改为:

module.controller('newTopicController', ['$scope', '$http', '$window', 'dataService', function ($scope, $http, $window, dataService) {...}
这似乎不正确:

module.controller('newTopicController', ['$scope', '$http', 'dataService', function ($scope, $http, $window, dataService) {...}
将其更改为:

module.controller('newTopicController', ['$scope', '$http', '$window', 'dataService', function ($scope, $http, $window, dataService) {...}
这似乎不正确:

module.controller('newTopicController', ['$scope', '$http', 'dataService', function ($scope, $http, $window, dataService) {...}
将其更改为:

module.controller('newTopicController', ['$scope', '$http', '$window', 'dataService', function ($scope, $http, $window, dataService) {...}
这似乎不正确:

module.controller('newTopicController', ['$scope', '$http', 'dataService', function ($scope, $http, $window, dataService) {...}
将其更改为:

module.controller('newTopicController', ['$scope', '$http', '$window', 'dataService', function ($scope, $http, $window, dataService) {...}

这是因为你的注射是错误的。更正注入顺序,如['$scope'、'$http'、'$window'、'dataService',function($scope、$http、$window、dataService)这是因为您的注入错误。更正注入顺序,如['$scope'、'$http'、'$window'、'dataService',function($scope、$http、$window、dataService)这是因为您的注入错误。请更正注入顺序,如['$scope','$http','$window',dataService',function($scope,$http,$window,dataService)。这是因为您的注入错误。更正注入顺序,如['$scope','$http','$window','dataService',function($scope,$http,$window,dataService)非常感谢!我想我真的是瞎子:非常感谢!我想我真的是瞎子:非常感谢!我想我真的是瞎子:非常感谢!我想我真的是瞎子:非常感谢!我想我真的是瞎子:P