如何将函数附加到ng-repeat的第二个元素

时间:2015-05-22 19:11:24

标签: javascript angularjs

我刚开始学习角度 我有一个与ng-repeater

相关的问题

我有ng-repeater喜欢:

<div ng-if="!promo.promotion.useHTML"
     class="{{promo.promotion.monetateId}}"
     ng-repeat="promo in promotions track by promo.promotion.slotId">
  <div ng-if="!promo.useHTML">
  <img ng-src="{{promo.promotion.imageURL}}"
       ng-click="promoOnClick(promo.promotion.promotionURL)"/>
</div>

我想在转发器的第二个元素上使用不同的ng-click函数。

我怎么能得到这个?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用包含转发器数组偏移索引的$ index变量。您可以使用它在转发器中构建条件语句。

<div ng-if="!promo.promotion.useHTML" class="{{promo.promotion.monetateId}}" ng-repeat="promo in promotions track by promo.promotion.slotId">
    <div ng-if="!promo.useHTML && $index !== 2">
        <img ng-src="{{promo.promotion.imageURL}}" ng-click="promoOnClick(promo.promotion.promotionURL)"/>
    </div>
    <div ng-if="!promo.useHTML && $index == 2">
        <img ng-src="{{promo.promotion.imageURL}}" ng-click="promoOnClickAnotherFunction(promo.promotion.promotionURL)"/>
    </div>
</div>

或按照以下评论的建议

<div ng-if="!promo.promotion.useHTML" class="{{promo.promotion.monetateId}}" ng-repeat="promo in promotions track by promo.promotion.slotId">
    <div ng-if="!promo.useHTML>
        <img ng-src="{{promo.promotion.imageURL}}" ng-click="($index==1) ? function1() : function2()"/>
    </div>
</div>

或作为第三个选项,您可以将索引作为第二个参数传递给回调函数,并将逻辑移动到控制器中。

并在你的回调中,检查索引和......根据索引调用你的 function1或function 2.最好将逻辑从模板/视图中移开。

更好的选择是在控制器中创建/设置您的promote()函数功能。例如,当你加载促销数组/对象时,循环它们并根据你的要求设置它们的提升功能。

var i;
var yourPromoteFunctionForSecondElement = function( promo_object ) {
    /*do your promo specific stuff here*/
}
for (i = 0; i < promotions.length; i++) {
    var promotion = promotions[i];
    if ( i == 1 ) {promotion.promote = yourPromoteFunctionForSecondElement(promotion);}
    else if () {promotion.promote = someOtherPromoteFunction(promotion);}
    else {/*etc*/}

}