60

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

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

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

4

3 回答 3

133

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

<a ng-click="navigation.book = book; bookSvc.showBook(book)" href="#{{book.id}}">{{book.title}}</a>
于 2013-11-11T19:53:16.777 回答
12

您只能将表达式写入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)不返回任何内容或falsenavigation.book = book则永远不会执行。

演示 2Fiddle

但如果bookSvc.showBook(book)返回truenavigation.book = book被调用。

演示 3Fiddle

于 2013-11-11T19:42:03.557 回答
4

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

于 2013-11-11T19:55:18.837 回答