与工厂的角度JS错误

时间:2014-05-28 16:03:48

标签: angularjs

我试图了解工厂是如何运作的,并且已经遇到了障碍。我正在关注第88页左右的this guide

运行我的代码会导致这些控制台错误。

TypeError:无法读取未定义

的属性'getData'
<div ng-app="timeEntry">
    <div ng-controller="timeEntryController">
        <p class="lead">Factory Test</p>
        <p>**** {{testing}}</p>
        <p>******** {{testing2}}</p>
    </div>
</div>


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

timeEntry.controller('timeEntryController', ['$scope', function ($scope, loadData) {
    $scope.testing = 'test';
    $scope.testing2 = loadData.getData();
}]);

timeEntry.factory('loadData', function ($http) {
    var test = 'test data';
    var factory = {};
    factory.getData = function () {
        return test;
    };
    return factory;
});

JS小提琴http://jsfiddle.net/dgdavidson/QPc3j/2/

我确信错误很明显,但我不知道它是什么。

1 个答案:

答案 0 :(得分:0)

您需要在声明中添加字符串'loadData':

所以改变这个:

timeEntry.controller('timeEntryController', ['$scope', function ($scope, loadData) {

为:

timeEntry.controller('timeEntryController', ['$scope', 'loadData', function ($scope, loadData) {

updated fiddle

您看到的错误是因为Angular正在将undefined传递到loadData。当然,undefined没有属性getData

这是一个容易/常见的错误,有些人会跳过手动声明字符串并使用ngMin为它们执行此操作(例如将其添加到您的grunt文件中)。这允许您使用以下样式的声明,而不必确保字符串匹配参数:

timeEntry.controller('timeEntryController', function ($scope, loadData) {