2017-07-31 8 views
0

どちらのソリューションも使用していますが、技術的にはどちらが良いかはわかりません。モデル値を直接使用するか、ビューからコントローラに関数のパラメータとして渡します

私は、関数呼び出し、つまり機能に、フロントエンドのHTMLからモデル値を渡すことができ
    1. NGをクリック

    ビュー: <input type="text" ng-model="name" ng-click="clicked(name)">

    コントローラー:

    $scope.clicked = function(name){ 
    var param = name; 
    } 
    

    OR

    ビュー: <input type="text" ng-model="name" ng-click="clicked()">

    コントローラー:

    $scope.clicked = function(){ 
    var param = $scope.name; 
    } 
    

    両方のソリューションが動作しますが、私は優れている1だろう。私の意見では、最初の解決策は、どのパラメータが関数に渡されているのか、どのパラメータが使用されているのかを示すことによって、より読みやすいコードを提供します。

  • +0

    あなたはこのような 'input'、' SELECT'と –

    +1

    は親切にこの参照してください他のなどのタグのためにlabel.justためのモデルを定義することはできません。[リンク](https://stackoverflow.com/questions/34435491/use -ng-model-with-label-element) – Indhu

    +0

    正しいセマンティクスと読みやすさのために、モデルをバインドして入力要素のイベントをクリックしようとする必要があります。 ng-modelでラベルを使用するためのコンテキストは何ですか?関係なく、事実、私は2番目の方法はより角張っていると思いますが、関数名は代表的なものではなく、おそらく '

    答えて

    0

    私は個人的には最小限のパラメータを渡すようにしています。

    あなたのccaseのような値をコントローラレベルで知ることができれば、私はそれを渡しません。

    コントローラーがクリックしたアイテムを区別するために、ng-repeatと言うときにのみ合格します。

    <div ng-repeat="item in items" ng-click="clicked(item)"></div> 
    
    +0

    は、ng-repeatを使用しているため、ループから選択した項目を取得する必要があります。パラメータを常に渡すとどうなりますか?それはプロセスの費用がかかりますか? –

    +0

    私はそれほど大きな違いはないと思います。もっと個人的な好みに似ている? – Icycool

    +0

    私は可能な限り最小スコープのparamsを宣言しようとしますが、テンプレート内でparamを公開する必要がない場合は 'var'を使用しようとします。 – Icycool

    関連する問題