2016-05-27 8 views
0

私は角型プロジェクトでtypescriptを設定しています。私は、次の構文を使用するコントローラを宣言するために:角とTypescript: 'これ'を参照する適切な方法

module app { 

    class MyController { 
     public myvar: boolean; 

     constructor() { 
      this.myvar= false; 
     } 
    } 
    angular.module("app").controller("MainController", [MainController]); 
} 

私は、コントローラの内部プロパティ/メソッドを使用して、私はスコープを挿入していないことに注意してください。 しかし、私は通常、私は宣言する必要があり、「この」でプロパティにアクセスするために好きではない:

var vm = this. 
vm.myvar = ... 

私は多くのメソッドを持っているとして、しかし、これは迷惑です。私はこれを何者でも宣言しなければなりません、これは繰り返しです。

'vm'を1回宣言するには、ベストプラクティスまたはパターンがありますか?

答えて

1

しかし、私は「この」でプロパティにアクセスするために好きではない、通常、私はvar vm = thisを宣言する必要があります...一度だけ「VM」を宣言するためには、ベストプラクティス、および/またはパターンが存在します?

これを削除するのは良いタイミングです。 TypeScriptでは、単にthisを使用し、変数にthisを割り当てないのは簡単です。それはすでに定義されていますので、使用することをおすすめします。

これを行う際のキーは、矢印関数を使用して、常にクラスインスタンスのthisを使用し、正規関数式にバインドされていないthisを使用しないようにすることです。

class MyController { 
    myVar = false; 

    someOtherMethod() { 
     // good 
     functionWithCallback(() => { 
      // this will be the class instance 
      console.log(this.myVar); 
     }); 

     // bad 
     functionWithCallback(function() { 
      // this will not be the class instance 
      console.log(this.myVar); 
     }); 

     // good 
     functionWithCallback(() => this.myOtherMethod()); 

     // bad, `this` in myOtherMethod is not the class instance 
     functionWithCallback(this.myOtherMethod); 
    } 

    myOtherMethod() { 
     console.log(this.myVar); 
    } 
} 

function functionWithCallback(callback: Function) { 
    callback(); 
} 
+0

とてもシンプルですが – Rolintocour

関連する問題