2016-06-28 5 views
0

angular.jsに新しく追加されました。角度jsのコントローラの関数宣言のスタイル

$scopeをアプリケーションコントローラで宣言されているすべての関数に使用すると、ビューで使用するつもりはありませんが、欠点はありますか?以下の例では、 "例2"のコーディングスタイルに従うことの欠点や利点はありますか?

は、実施例の両方において、我々は、ビュー内someFunc1を表示しようとする

例1

var app = angular.module('def',[]); 
app.controller('abcctrl' , []) { 

    $scope.function someFunc1(){ 
     someFunc2(); 
    } 

    function someFunc2(){ 
    } 

}]); 

例2

var app = angular.module('def',[]); 
app.controller('abcctrl' , []) { 

    $scope.someFuc1 = function(){ 
    $scope.someFunc2(); 
    }; 

    $scope.someFuc2 = function(){ 
    }; 

}]); 

答えて

1

あり、実施例2は、保守の点で欠点を有しますおよび可読性。ビューで関数を使用する予定がない場合は、$ scopeに配置しないでください。

あなたの$ scopeに余計な関数を公開すると、次の人のコードを読みやすく理解することができなくなります。アプリを管理している次の人は、「なぜこれがここにあるのですか?」と尋ねるかもしれません、彼らはそれについての誤った仮定をするかもしれません。 $スコープで関数を公開すると、その関数がビューに必要であるという明確なメッセージが送信されます。

$ scopeから不要な機能を削除すると、ビューを気にする必要のない内部関数または非公開関数として認識されやすくなります。これにより、物事の混乱を少なくします。

時間がある場合は、有名なJohn Papaによって書かれた角度のあるアプリケーションのために広く受け入れられているコーディングスタイルのガイドを読むことをおすすめします。

https://github.com/johnpapa/angular-styleguide

側注:

は$スコープに物事を割り当てるには、物事の "古い方法" です。残念ながら、$ scopeを使って多くの例をオンラインで見つけることができます。なぜなら、angularjsチームが物を束縛するためのより簡単で読みやすい方法を思い付くまでにかなりの時間がかかっていたからです。 「コントローラとして」という新しい方法があります。上記のガイドで説明しています。