Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Вы можете написать только выражение в 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

Ответ 3

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