TypeError:无法读取未定义的属性'addTopic'。我瞎了吗?

TypeError:无法读取未定义的属性'addTopic'。我瞎了吗?

问题描述:

因为我一直在盯着这个问题好几天了,我在AngularJS有点新,我想也许这里有人可以帮助我。所以,我的问题:TypeError:无法读取未定义的属性'addTopic'。我瞎了吗?

我得到一个类型错误时,我尝试保存在论坛上一个新的话题,我创建:我控制器

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)所在的位置。

我也有另一个控制器谁也使用工厂,但不应该是一个问题吧?

谢谢你的时间。

+0

这是因为你的注入是错误的。更正注射顺序,如['$ scope','$ http','$ window','dataService',函数($ 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) {...} 
+0

非常感谢!我想我真的很盲目:P – markbutiken