更改ng-repeat内呈现的ng-include模板

时间:2014-01-29 15:26:14

标签: javascript angularjs angularjs-scope angularjs-ng-repeat

我有一个ng-repeat,其中每个实例都包含ng-include。像这样:

<li ng-repeat="item in items">
    <div class="item-actions" ng-include="actionsTemplate"></div>
</li>

我现在希望能够通过点击相同范围内的按钮来设置和删除actionsTemplate来源,如下所示:

<li ng-repeat="item in items">
    <div class="item-actions" ng-include="actionsTemplate"></div>
    <button ng-click="toggleActionsTemplate()">Toggle Actions</button>
</li>

因此,点击该按钮会触发一个功能toggleActionsTemplate(),将actionsTemplate来源设置为foo,或者如果已将其设置为foo,则将其设置为{{1删除模板。

我已经尝试过这样做,但无法弄清楚如何获取控制器函数来定位调用该函数的同一null实例中的模板。

这是否可行,更重要的是,这是实现这种行为的好方法吗?

1 个答案:

答案 0 :(得分:0)

这是一个掠夺者:http://plnkr.co/edit/4p56QeuqpMAH1yc0tbfy?p=preview

  • 您需要为actionsTemplate内的每个子范围初始化不同的ngRepeat变量。
  • 您可以使用ngInit初始化范围变量。

一个例子:

<li ng-repeat="item in items" ng-init="action = actionsTemplate">
    <div class="item-actions" ng-include="action"></div>
    <button ng-click="action = toggleAction(action)">Toggle Actions</button>
</li>

<强>控制器:

$scope.toggleAction= function(action){
  return action === 'foo' ? null : 'foo';
}