Как использовать ng-click с несколькими выражениями? [дубликат]

этот вопрос уже есть ответ здесь:

Я хочу использовать ng-click для выполнения нескольких выражений. Я хочу как установить значение для модели, так и вызвать метод из $scope, например:

<a ng-click="navigation.book = book && bookSvc.showBook(book)" href="#{{book.id}}">{{book.title}}</a>

где у меня && отделения я хочу выполнить два разных выражения. Я знаю, что могу просто добавить метод, который делает обе вещи в контроллере. Должен ли я просто сделать это, или есть способ выполнить два выражения непосредственно изнутри ng-click?

3 ответов


простое использование '; 'вместо' & & ' Для разделения выражения должно работать для вас:

<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 содержание.

демо Скрипка

ссылка

у нас есть несколько вариантов, чтобы вызвать navigation.book = book

что произойдет, если мы напишем:

ng-click="( bookSvc.showBook(book) && (navigation.book = book))"

в этом случае, если (кажется bookSvc сервис) bookSvc.showBook(book) ничего не возвращает или false на navigation.book = book никогда не будет выполнена.

демо 2 Скрипка

но если bookSvc.showBook(book) возвращает true the navigation.book = book будет вызываться.

демо 3 Скрипка


Я бы рекомендовал поместить всю логику в функцию и просто назначить ей ng-click, чтобы сделать код проще и элегантнее.