2016-04-09 17 views
1

私は角度シード、EcmaScript 6、およびnode.js Webサーバーに基づいて、AngularJS 1.5.4でデモアプリケーションを開発しています。角度1.5.4サービスが未定義

ここで説明したようにコンポーネントルータを使用しています:https://docs.angularjs.org/guide/component-routerサービスからコンポーネントからコールされたときにエラーが発生します。

エラーは以下

etsy.controller.es6:17 Uncaught ReferenceError: EtsyService is not defined 

では、関連するコード

index.htmlを

<script src="/bower_components/angular/angular.js"></script> 
<script src="/bower_components/bower-angular-router/angular1/angular_1_router.js"></script> 
<script src="/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script> 
<script src="/app.js"></script> 
<script src="/components/core/constants.es6"></script> 
<script src="/components/etsy/etsy.service.es6"></script> 
<script src="/components/etsy/etsy.controller.es6"></script> 

etsy.service.es6

(function() { 
'use strict' 

// variables here ... 

class EtsyService { 
    constructor($http) { 
     _http.set(this, $http); 
    } 

    // methods here ... 

    static etsyServiceFactory($http) { 
     return new EtsyService($http); 
    } 
} 

angular 
    .module('myApp.etsy') 
    .factory('EtsyService', EtsyService.etsyServiceFactory); 
})(); 

etsy.controller.es6あります

(function() { 
'use strict'; 

class EtsyController { 
    constructor($scope) { 
     $scope.message = 'Hi from the $scope'; 
    } 
} 

angular 
    .module('myApp.etsy', []) 

    .service('etsyService', EtsyService) 

    .component('etsy', { 
     templateUrl: 'components/etsy/etsy.html', 
     controller: EtsyController 
    }); 
})(); 

私はしばらくの間これを検索していましたが、私が間違っていることを理解できません。何か案が?あなたが生命維持以内にあなたetsy.controller.es6ファイルにEtsyServiceための関数を定義する必要が

おかげ

+0

([]、 'myApp.etsy') '.moduleを削除します'コントローラから、基本的にあなたのモジュールを再初期化しています –

+0

私は@PankajParkarを試しましたが、私は同じエラーを受け取ります – Davide

+0

'etsy.controller.es6'の中になぜ' EtsyService'を作成したのか分かりますか? service.es6' –

答えて

0

。具体的な例として、heroes.jsとcrisis.jsのガイドがどのように実装されているかを見ることができます。 https://docs.angularjs.org/guide/component-router

+0

エリック、確かに解決策ですが、関数を使用せずにサービスを参照する方法はありますか?それ以外の場合は本当に冗長に見えます – Davide

+0

依存関係注入を使用してhttps://docs.angularjs.org/guide/diでサービスを渡すことができます –

-1

名前ファイルをEtsyService.jsに変更してみてください。これはうまくいくはずです。

+0

これはなぜ関連がありますか?スタイルガイドによると、その名前はfeature.type.js(ref:https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#style-y121)です。 – Davide

0

あなたは、あなたが新しいものを作成することによって、モジュールを上書きされ、その順序(サービサーとコントローラ)に呼び出す場合:

angular 
    .module('myApp.etsy')// <--------- getting a module 
    .factory('EtsyService', EtsyService.etsyServiceFactory); 

angular 
    .module('myApp.etsy', [])//<--------------- creating a new module 

    .service('etsyService', EtsyService) 
+0

私は次のように変更しました。あなたはお勧めしますが、私はまだ同じエラーが発生します:( – Davide

+0

[Plunker](https://plnkr.co/edit/)にあなたのコードを投稿してください。 –