AngularJS:如何在模板中设置变量?

Dan*_*l F 85 javascript angularjs ng-init

如何避免{{f = ...}}在第三行中的语句打印出内容forecast[day.iso]

我想避免forecast[day.iso].temperature每次迭代使用等等.

<div ng-repeat="day in forecast_days">
  {{$index}} - {{day.iso}} - {{day.name}}
  {{f = forecast[day.iso]}}
  Temperature: {{f.temperature}}<br>
  Humidity: {{f.humidity}}<br>
  ...
</div>
Run Code Online (Sandbox Code Playgroud)

com*_*oma 182

使用ngInit:http://docs.angularjs.org/api/ng.directive:ngInit

<div ng-repeat="day in forecast_days" ng-init="f = forecast[day.iso]">
  {{$index}} - {{day.iso}} - {{day.name}}
  Temperature: {{f.temperature}}<br>
  Humidity: {{f.humidity}}<br>
  ...
</div>
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/coma/UV4qF/

  • 如果你想要多个变量,只需用分号";"分隔它们. (30认同)

Zan*_*non 32

不是最好的答案,但它也是一个选项:因为你可以连接多个表达式,但只有最后一个表达式被渲染,你可以用你的表达式完成"",你的变量将被隐藏.

因此,您可以使用以下内容定义变量:

{{f = forecast[day.iso]; ""}}
Run Code Online (Sandbox Code Playgroud)

  • 当您希望将表达式绑定到范围更改而不是在init上运行一次时,此hack特别有用. (7认同)