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