如何在多个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议把所有的逻辑放在一个函数中,只要把它分配给它,使代码更简单,更优雅。