2017-03-24 5 views
0

TypeScriptと角型JSでコントローラにサービスを注入しようとします。しかし、働いていない。私のコードの問題は何ですか?それは私のサービスの問題ですか?私のサービス内のすべての機能にアクセスすることはできません。デバッグを試してみると、すべて定義されていません。私のコードがあります。TypeScriptがAngularJSで動作していないコントローラーにサービスを注入する

コントローラ

module Controller { 

    import Service = Services; 

    export class UserCtrl implements Interface.IUserCtrl { 

     private user: Model.User; 
     private users: Model.User[]; 
     private userService: Service.UserService; 

     static $inject = ['$scope','UserService']; 

     constructor(userService: Service.UserService) { 
      this.userService = userService; 
     } 

     public getUsers =() => { 
      this.users = this.userService.findAll(); 
      return this.users; 
     } 
     public getUser = (name: string) => { 
      return this.userService.find(name); 
     } 
    } 

    app.controller('UserCtrl', Controller.UserCtrl); 
} 

サービス

module Services { 

    export class UserService implements Interface.IUserService { 

     private users: Model.User[]; 

     constructor() { 
      this.users = [new Model.User("Giunta", "Lucas", 26), new Model.User("Rousselet", "Céline", 26)]; 
     } 

     public create = (user: Model.User) => { 

     } 
     public edit = (user: Model.User) => { 

     } 
     public remove = (user: Model.User) => { 

     } 
     public find = (name: string) => { 
      for (let u of this.users) { 
       if (u.name == name) { 
        return u; 
       } 
      } 
     } 
     public findAll =() => { 
      return this.users; 
     } 

    } 

    app.service('UserService', Services.UserService); 
} 
+0

完全修飾名 'Services.UserService'の代わりに' app.service( 'UserService'、UserService); 'を実行できますか? –

答えて

2

あなたは$スコープとUserServiceの両方を要求するので、それはだが、コンストラクタはそれ以降でのみ受け付けます。

これを修正するには、$ injectのものと同じ順序でコンストラクタのプロパティを持つ必要があります。言及@toskvとして

static $inject = ['$scope','UserService']; 

    constructor($scope, userService: Service.UserService) { 
     this.userService = userService; 
    } 
0

、また、あなたのコンストラクタに$scopeを注入する必要があります。

依存関係は順調なので、今のコードでは、インジェクタはあなたの注入されたUserServiceがあなたが望むものではないと考えています。$scopeです。

+0

私は注射器が爆発するとは思わないが、彼はちょうど注射された$スコープでuserService変数に終わるだろう。 :) – toskv

+1

私は私の説明で少し劇的になった:) –

関連する問題