1

最近、角型コンポーネントの起動時に関数を初期化しました。角型コンポーネントの起動時に関数を初期化するパターン

私はこのcommentを見ていたし、私はそれが良いパターンであるか、より良い関数を宣言し、以下のようなコードの後に​​それを呼び出すことができれば知りたい:

angular.module('app').controller('control',[..., 
    function(){ 
    ... 
    var init = function() { 
     //what i wish run on launch 
    }; 

    // function call to launch 
    init(); 

    } 
) 

やコメントで述べたように:

(function(){ 
    //code to run 
}()); 

この最後のアプローチを使用すると、何が使用されているか、または既知の問題がありますか?

答えて

0

私はあなたが「上に結合可能なメンバー」のプリンシパルを使用することをお勧めして機能は、コントローラの一番下に隠すことができ、掲揚れますように、関数宣言の代わりに、関数式を使用します。

angular.module('app').controller('control',[..., 
    function(){ 


    // function call to launch 
    init(); 

    // declare functions at bottom 
    function init() { 
     //what i wish run on launch 
    } 

    } 
) 

参考:John Papa Angular Style guide

+0

ニース!私はこの方法を使用し、うまく動作し、非常にきれいに見えます。ありがとう –

0

角度1.4.xまでパパスタイルのガイドは、最初にすべてinit関数を呼び出すために使用することをお勧めします。私は同じことをお勧めします。

ここでは2番目のオプションは考えられません。これはIIFEです。グローバルで宣言するのではなく、隔離された範囲で関数を定義する可能性が高くなります。

特に、componentについて具体的に話しているのであれば、$onInit角成分ライフサイクルフックを使用して初期化コードを呼び出す必要があります。

angular.module('app').controller('control',[..., 
    function(){ 
    var vm = this; 
    vm.$onInit = $onInit; 


    function $onInit() { 
     //what i wish run on launch 
    }; 
    } 
) 
.component('myComponent', { 
    controller: 'control', 
    templateUrl: 'sometemplate.html' 
}) 
+0

最初よりも簡単ではありませんので、私はこの方法を使用していませんでしたが、今私は、この機能(生命維持)と命名する方法を知っています。ニース!ご説明をいただき、ありがとうございます。 –

関連する問題