如何使用多个表达式的ng-click?

时间:2013-11-11 19:32:48

标签: javascript angularjs angularjs-ng-click

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

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

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

3 个答案:

答案 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,使代码更简单,更优雅。