我刚开始学习角度
我有一个与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
函数。
我怎么能得到这个?
答案 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*/}
}