如何在多个expression式中使用ng-click?

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

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

我在哪里&&分离我想要执行的两个不同的expression式。 我知道我可以添加一个方法,在控制器中做这两件事情。 我应该这样做,还是有办法直接从ng-click执行两个expression式?

简单地使用';' 而不是“&&”分开expression式应该为你工作:

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

您只能将expression式写入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 小提琴

我build议把所有的逻辑放在一个函数中,只要把它分配给它,使代码更简单,更优雅。