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

Cor*_*han 58 javascript angularjs angularjs-ng-click

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

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

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

uri*_*ish 130

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

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

  • 为什么不`ng-click ="bookSvc.showBook(navigation.book = book)"`? (5认同)
  • 是的,做到了.我应该意识到这只是代码! (4认同)

Max*_*tin 11

你只能写表达式ng-click.

ngClick指令允许您在单击元素时指定自定义行为.

但你可以这样写:

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

在这种情况下navigation.book获取book内容.

演示 Fiddle

参考

我们在这里有几个选项可供调用 navigation.book = book

如果我们写下会发生什么:

ng-click="( bookSvc.showBook(book) && (navigation.book = book))"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果(好像bookSvc是一个服务)bookSvc.showBook(book)返回任何内容或false中,navigation.book = book将永远不会执行.

演示2 Fiddle

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

演示3 Fiddle