0

私はヨーマン角度フルスタックジェネレーターを使用しています。MongoDB で ToDo アイテムのチュートリアルを試す。$http.get を使用して DB から読み取ることができました。しかし、CURD を実行できるように、さらに進んで工場を作成することにしました。

ファクトリを作成した後、注入しようとしましたが、次のようなエラーが発生しました。

Error: [$injector:unpr] Unknown provider: factToDoProvider <- factToDo
http://errors.angularjs.org/1.2.6/$injector/unpr?p0=factToDoProvider%20%3C-NaNactToDo
at http://localhost:9000/bower_components/angular/angular.js:78:12
at http://localhost:9000/bower_components/angular/angular.js:3538:19
at Object.getService [as get] (http://localhost:9000/bower_components/angular/angular.js:3665:39)
at http://localhost:9000/bower_components/angular/angular.js:3543:45
at getService (http://localhost:9000/bower_components/angular/angular.js:3665:39)
at invoke (http://localhost:9000/bower_components/angular/angular.js:3687:13)
at Object.instantiate (http://localhost:9000/bower_components/angular/angular.js:3708:23)
at http://localhost:9000/bower_components/angular/angular.js:6758:28
at link (http://localhost:9000/bower_components/angular-route/angular-route.js:897:26)
at nodeLinkFn (http://localhost:9000/bower_components/angular/angular.js:6212:13) 

Main.jsコントローラーは次のようになります

'use strict';

angular.module('angularFsApp')
.controller('MainCtrl', function ($scope, $http, factToDo) {
    $http.get('/api/awesomeThings').success(function(awesomeThings) {
      $scope.awesomeThings = awesomeThings;
    });

    $http.get('/todo/todoItems').success(function(todoItems) {
      $scope.todoItems = todoItems;
    });
    //$scope.newtodoItems = factToDo.getAllItems();

   }); 

factToDo は次のような私の工場です (todo.js)

angular.module('angularFsApp')
.factory('factToDo', function() {
    return {
        getAllItems: function () {
            return [
                {description: 'Hello World 1', priority: '15'},
                {description: 'Hello World 2', priority: '15'},
                {description: 'Love for all', priority: '1500'}
            ];
            }
    }
});

次のようにAngularJSエラー参照で説明されているように、main.jsのコードを変更してみました

angular.module('angularFsApp')
.controller('MainCtrl', ['$scope', '$http', 'factToDo', function ($scope, $http, factToDo) {

ダン・ワーリンも試しましたが、同じ問題が発生しました。

4

1 に答える 1

1

「factToDo」を含むファイルがアプリに含まれていることを確認してください。

開発を便利にし、将来このような問題を回避するには、Gruntタスク ランナーを使用してすべてのコードを連結し、1 つのファイルとしてインクルードしてみてください。

このチュートリアルは、Grunt とファイル連結を開始するのに十分なようです。

于 2014-01-31T15:31:26.433 に答える