質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

Q&A

1回答

2641閲覧

ng-model, ng-change, ng-blurをdirectiveに格納する方法

aoshima.natsuki

総合スコア33

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

0グッド

0クリップ

投稿2016/02/26 04:42

質問させてください。
AngularJSを採用したwebアプリケーションをつくっています。
view側でjsのcontrollerに紐付ける際、

html

1<textarea name="title" ng-model="item" ng-change="updateStatus('editing')" ng-blur="textareaBlur(item)">

など ng-***で1つ1つトリガーにして呼び出す方法が一般的だと思うのですが、ng-*** ng-*** ng-***と続くとコードの見通しも悪くなり、良い方法がないか模索しているのですが、なにか方法はありませんか?

こういうとき、directiveに格納してchangeとblurをまとめて書くなどするのがよいのでしょうか。

とりあえず、ng-***を使えばいいよという情報が多く、可能な限りdirectiveに格納すべきという話もよく聞くのですがネットにはあまり情報がなく、もやっとしています。

初心者な質問ですみませんが、ご回答いただけますと嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

これが正解ということではなく、考え方の一つとして。

そもそも論になりますが、Webアプリの開発で Angular を使うのには、HTML 要素とビジネスロジックを連携させる部分のコードを最小化するという目的があると思います。
その観点で言えば、ng-xxx で記述できることは ng-xxx で書き、そうでない処理だけ directive や スコープメソッド化する、というのが一般的には正解と言えるのではないでしょうか。
これは、ng-xxx だけでなく AngularJSが提供している各種のサービスやディレクティブの使用を、自前のコードを書くことよりも優先するという考えでもあります。

ただし、カスタムディレクティブの小さなコードを書くことによって、HTML側の記述量を劇的に削減できる、というような場合はこの限りではありません。つまり、どちらがコード量を削減できるかというバランスを重視してはどうか、ということです。

ご参考になれば。

投稿2016/02/27 02:50

tkanda

総合スコア2425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aoshima.natsuki

2016/02/29 11:05

ご回答ありがとうございます。 なるほど。確かに、何でもかんでもdirectiveやスコープメソッド化すればよいという問題ではないのは理解できました。現状として、html側の記述量がとても多くなってしまっており、ng-xxxで解決できるものもdirectiveに逃がしたいと考えています。 その場合、具体的にどのような書き方でcontrollerと連携するのかよくわかりません... angular.module('app').directive 'textarea', -> { restrict: 'E' link: -> clickを検知 -> controller側の$scope.textareaClick = (item) -> に渡す focusを検知 -> controller側の$scope.textareaFocus = (item) -> に渡す blurを検知 -> controller側の$scope.textareaBlur = (item) -> に渡す } のようなことを素のjavascriptで書かないといけないんだな... というのはわかるのですが、具体的なコードにするとどのような書き方になるのでしょうか。よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問