Как использовать ng-click с несколькими выражениями? [дубликат]
этот вопрос уже есть ответ здесь:
Как добавить много функций в один НГ-клик?
5 ответов
Я хочу использовать 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)возвращаетtruethenavigation.book = bookбудет вызываться.демо 3 Скрипка
Я бы рекомендовал поместить всю логику в функцию и просто назначить ей ng-click, чтобы сделать код более простым и элегантным.
Comments