2017-08-30 1 views
0

現在、Angularを使用しているのは6〜7ヶ月であり、関連する知識はあまり得られていません。しかし、以下に示すように、私はこのエラーに引っかかっています過去1日から:以下ファクトリがオブジェクトを返す場合でもインジェクタエラーが発生する

Error: [$injector:undef]

http://errors.angularjs.org/1.6.5/ $injector/undef?p0=DataService

Stack trace: K/<@http://localhost:64965/Scripts/angular.min.js:7:76

私のサービスコードです:

以下
(function() { 
    var DataService = function ($http) { 
     var allItems = function() { 
      return $http.get("./data/myData.json").then(function (serviceResp) { 
       return serviceResp.data; 
      }); 
     }; 
    }; 

    app.factory("DataService", ["$http", DataService]); 
}()); 

は私のコントローラのコードです:

(function() { 
    var ItemController = function ($scope, DataService) { 
     var allItems = function (data) { 
      $scope.collection = data; 
     }; 
    }; 
    app.controller("ItemController", ["$scope", "DataService", ItemController]) 
}()); 

工場オブジェクトを返すが、私はまだ上記のエラーを取得しています。私はキャッシュを何回かクリーニングしようとし、何度もアプリを再起動しました。

+2

工場は値/ objを返す必要があります。あなたは何も返されていません – Ved

+0

答えに感謝しますが、私は返信文をどこに置くべきかを指摘してください。 もう一度おねがいします。 – user8084218

+0

私はそのための答えを追加しています。 – Ved

答えて

0

あなたのサービスを書いた方法は間違っています。

それは次のように記述する必要があります:

var app = angular.module('ServiceExample',[]); 
var serviceExampleController = 
       app.controller('ServiceExampleController', ServiceExampleController); 
var serviceExample = app.service('NameOfTheService', NameOfTheService); 

ServiceExampleController.$inject = ['NameOfTheService'] //protects from minification of js files 

function ServiceExampleController(NameOfTheService){ 
    serviceExampleController = this; 
    serviceExampleController.data = NameOfTheService.getSomeData(); 
} 

function NameOfTheService(){ 
    nameOfTheService = this; 
    nameOfTheService.data = "Some Data"; 
    nameOfTheService.getSomeData = function(){ 
      return nameOfTheService.data; 
    }  
} 

は、次にHTMLであなたは次のようにそれを使用することができます:あなたはfactoryを使用することを探しているなら

<div ng-controller = "ServiceExampleController as serviceExample"> 
    {{serviceExample.data}} 
</div> 

this postをお読みください。

+0

ねえ、答えてくれてありがとうが、私は違うと頼む。実際には、質問に記載されているのと同じ方法で工場を書こうとしました。しかし、唯一の違いは、私はASP.NET APIを使用してここで私は単純なjsonファイルを使用しています。 – user8084218

0

工場は値/ objを返す必要があります。あなたは何も返さない。私はテストしていませんが、うまくいくはずです。

(function() { 
    var DataService = function ($http) { 
     var allItems = function() { 
      return $http.get("./data/myData.json").then(function (serviceResp)  { 
       return serviceResp.data; 
      }); 
     }; 
     return allItems ; 

    }; 


    app.factory("DataService", ["$http", DataService]); 
}()); 
関連する問題