根据ng-repeat $ index设置指令范围值

时间:2017-10-26 17:05:34

标签: angularjs

我正在使用ng-repeat来执行多个子指令。在child指令的第一个实例中,我想设置属性' doAutofocus'为真。当我尝试下面的代码时,我得到一个解析错误。

  

错误:$ parse:syntax语法错误

我的指示' tradePanel',范围为{trade: '=', doAutofocus: '='}

当我的ng-repeat $index == 0时,我希望doAutofocus为true,否则为false。

我在服务器端使用{{ }}

的刀片模板

对于angularjs模板,我正在使用:

$interpolateProvider.startSymbol('{%');
$interpolateProvider.endSymbol('%}');

如何为我的第一个实例正确设置doAutofocus属性?

<div class="row">
  <div class="col-xs-12 col-sm-12 col-sm-6" ng-repeat="trade in deal.trades">
    <trade-panel trade="deal.trades[$index]" ng-attr-do-autofocus="{% ( $index === 0 ) ? true : false %}"></trade-panel>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

由于您对doAutofocus指令范围属性使用双向绑定,因此不能在此处使用插值。只需编写您希望传递给指令的表达式。这必须是父范围的现有值。由于我们位于ng-repeat块内,您可以使用提供的$first变量:

<div class="col-xs-12 col-sm-12 col-sm-6" ng-repeat="trade in deal.trades">
  <trade-panel trade="trade" do-autofocus="$first"></trade-panel>
</div>