2013-10-23 6 views
16

AngularJSを使い始めたばかりです 次のコードはコンソールにエラーを表示します。

不明なプロバイダ:$ scopeProvider < - $ scope < - newActiveOrdersModel。私は調査しましたが、Unknown Providerのエラーはさまざまな理由で発生する可能性があります。誰かが間違っている場所を指摘できればいいですね。

var app; 
(function(angular){ 

    app = angular.module('OrdersDashboard',[]); 
    app.config(['$routeProvider', function($routeProvider) { 
     $routeProvider. 
      when('/current/new', {templateUrl: 'orders/partials/new_current', controller: 'newActiveOrdersCtrl'}). 
      otherwise({redirectTo: '/'}); 
    }]); 
    app.service('newActiveOrdersModel', ['$scope', '$rootScope', 
     function($scope, $rootScope){ 

      this.Orders=["This is a test order"]; 
      this.fetchOrders = function(){ 

       console.log("This is a test order"); 
       this.Orders=["This is a test order1111"]; 
      }; 
     }]); 
    app.controller('newActiveOrdersCtrl', ['$scope', '$rootScope', 'newActiveOrdersModel', 
     function($scope, $rootScope, newActiveOrdersModel){ 

      $scope.test="Hello World"; 
     }]); 

})(angular); 

Angular Jsは "newActiveOrdersModel"を認識できないようです。

+9

サービスに '$ scope 'を挿入することはできません。シングルトン$スコープのようなものはありません。あなたのコードがそれを何も使っていないように見せているのはなぜなのでしょうか。 –

答えて

32

これは単なる推測ですが、あなたのサービスの依存として$ scopeがリストされている理由はわかりません。私はこのようなものだと思います。

app.service('newActiveOrdersModel', ['$rootScope', 
    function($rootScope){..}] 

エラーを解決します。また、あなたが絶対に必要としない限り、私は$ rootScopeを含めません。 $ rootScopeに物を格納するためにAngularでは一般的に悪い習慣とみなされています。

+0

私はそのスコープが依存関係としてリストアップできないことを知らなかった.RootScopeが必要になるだろうモデルと通信するためのイベント – Abhik

+2

場合によってはrootScopeだけを使用する必要がありますが、グローバルスコープを使用する代わりに、別のサービスにイベントを保存することをお勧めします。グローバルスコープの使用には本質的に間違っていることはありませんが、命名の競合を防ぎ、グローバルスコープを過密させないようにすることも、より良い方法です。 – NicolasMoise

関連する問題