我想使用ng-click执行多个表达式。我想在模型上设置一个值,并从$scope
调用一个方法,如下所示:
<a ng-click="navigation.book = book && bookSvc.showBook(book)" href="#{{book.id}}">{{book.title}}</a>
我有&&
分隔我想要执行的两个不同表达式。我知道我可以添加一个在控制器中执行这两项操作的方法。我应该这样做,还是有办法直接从ng-click
内部执行两个表达式?
答案 0 :(得分:130)
只需使用';'而不是'&amp;&amp;'分离表达式应该适合你:
<a ng-click="navigation.book = book; bookSvc.showBook(book)" href="#{{book.id}}">{{book.title}}</a>
答案 1 :(得分:10)
您只能将表达式写入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
答案 2 :(得分:4)
我建议将所有逻辑放在一个函数中,只需对其进行ng-click,使代码更简单,更优雅。