如何将 ng-click 与多个表达式一起使用

How to use ng-click with multiple expressions?

本文关键字:表达式 一起 ng-click      更新时间:2023-09-26

我想使用 ng-click 来执行多个表达式。我想在模型上设置一个值,并从$scope调用一个方法,如下所示:

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

&&将我想要执行的两个不同表达式分开。我知道我可以添加一个在控制器中同时做这两件事的方法。我应该这样做,还是有没有办法直接从内部ng-click执行两个表达式?

只需使用";"而不是"&&"来分隔表达式应该适合您:

<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则将调用navigation.book = book

演示 3 小提琴

我建议将所有逻辑放在一个函数中,然后只分配ng-click,以使代码更简单,更优雅。