ng-if应该仅显示一个对象 [英] ng-if should show only one object

查看:76
本文介绍了ng-if应该仅显示一个对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,亲爱的Stackoverflow社区我遇到了问题.首先是我的代码:

Hi dear Stackoverflow Community i have a problem. First here is my Code:

html:

<md-card md-theme-watch flex="100" ng-repeat="offer in company.offers">

    <md-button class="md-fab md-mini md-primary md-fab-oi" aria-label="copy" ng-click="company.setEditVisibility()">

    <oi-offer-edit offer="offer" is-change="true" ng-if="company.isEditVisible">             
    </oi-offer-edit>
</md-card>

我的控制器:

function setEditVisibility(){
        vm.isEditVisible = !vm.isEditVisible;
    }

它工作得很好,问题在于它为每个重复的Object显示oi-offer-edit指令.如果您需要更多信息,请随时询问!

it work just fine the problem is that it shows oi-offer-edit directive for every repeated Object. If you need more info pls dont hesitate to ask!

推荐答案

如果您不想触摸标记并希望重复 oi-offer-edit 元素,则必须在 offer 对象本身上使用布尔属性:

If you don't want to touch your markup and want the oi-offer-edit element to be repeated, you have to use a boolean property on the offer object itself:

<md-card md-theme-watch flex="100" ng-repeat="offer in company.offers">
    <md-button class="..." ng-click="offer.formVisible = !offer.formVisible">

    <oi-offer-edit offer="offer" is-change="true" ng-if="offer.formVisible">             
    </oi-offer-edit>
</md-card>


在我意识到之前,您想在每个 md-card :

您可能希望将 oi-offer-edit 元素放置在 ng-repeat 容器之外,因为据我所见,您只需要一个带有所选 company.offers offer -数据的

You might want to place your oi-offer-edit element outside your ng-repeat container, because as far as i see it in your snippet, you only need one with the offer-data of the selected company.offers.

因此,您可以将 offer 缓存在点击处理程序中,并使 oi-offer-edit 可见.像这样:

So you could just cache the offer on the click handler and make your oi-offer-edit visible. Something like this:

<md-card md-theme-watch flex="100" ng-repeat="offer in company.offers">
    <md-button class="..." ng-click="company.setEditVisibility(offer)">
</md-card>

<oi-offer-edit offer="currentSelectedOffer" is-change="true" ng-if="company.isEditVisible">             
</oi-offer-edit>

function setEditVisibility(selectedOffer){
     vm.currentSelectedOffer = selectedOffer;
     vm.isEditVisible = !vm.isEditVisible;
}

这篇关于ng-if应该仅显示一个对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆