Как использовать 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, чтобы сделать код проще и элегантнее.