Ng-clickを使用して複数の式を実行したい。次のように、モデルに値を設定し、$scope
からメソッドを呼び出します。
<a ng-click="navigation.book = book && bookSvc.showBook(book)" href="#{{book.id}}">{{book.title}}</a>
実行したい2つの異なる式を分離する&&
があります。コントローラーで両方のことを行うメソッドを追加できることはわかっています。私はそれをやるべきですか、それともng-click
の中から直接2つの式を実行する方法がありますか?
単に「;」を使用する式を区切る '&&'の代わりに動作するはずです:
<a ng-click="navigation.book = book; bookSvc.showBook(book)" href="#{{book.id}}">{{book.title}}</a>
ng-click
には式のみを書き込むことができます。
NgClickディレクティブを使用すると、要素がクリックされたときのカスタム動作を指定できます。
しかし、あなたは書くことができます:
<a ng-click="( (navigation.book = book) && bookSvc.showBook(book))" href="#{{book.id}}">{{book.title}}</a>
この場合、navigation.book
はbook
コンテンツを取得します。
デモ Fiddle
参照
navigation.book = book
を呼び出すためのいくつかのオプションがあります
次のように書くとどうなりますか:
ng-click="( bookSvc.showBook(book) && (navigation.book = book))"
この場合(bookSvc
はサービスのように見えます)bookSvc.showBook(book)
は何も返さないか、false
を返しますが、navigation.book = book
は実行されません。
デモ2 Fiddle
ただし、bookSvc.showBook(book)
がtrue
を返す場合、navigation.book = book
が呼び出されます。
デモ3 Fiddle
コードをよりシンプルでエレガントにするために、すべてのロジックを関数に入れて、ng-clickを割り当てることをお勧めします。