角度:如何禁用一个锚定标记出锚标签的数组(NG-重复)的

问题描述:

我有一个显示可点击组承包商,客人的名单锚标签的NG-重复:角度:如何禁用一个锚定标记出锚标签的数组(NG-重复)的

<a href="#/contact/{{ ::member.fullProfile.xpid }}" ng-click="storeRecentContact(member.fullProfile.xpid)" class=" GroupRow ListRow ListRow-Contact vmsection ng-class:{'last': $last}" ng-class-odd="'ListRowOdd'" ng-class="{'ListRowLast':$last}" data-ng-repeat="member in group.members | filter: searchFilter() | orderBy: [selectedSort.type, 'fullProfile.displayName'] track by member.xpid" droppable="Call" ng-disabled="member.contactId == myself.contactId"> 

由于你可以在锚标签的末尾看到,我试图禁用1个ng-repeat元素,更具体地说,是我/我自己的锚标签。

myself.contactId 

member.contactId 

将是代表我的用户定位标记相同。但是,它仍然没有禁用我点击我自己的组成员锚标记的能力。我是否正确使用ng-disabled?或者,还有另外一种方法来完成这个吗?

+0

'a'tag没有禁用属性。 Ng-disabled仅适用于具有禁用属性的标签。 – Michelangelo

你无法禁用<a>锚标记,你应该尝试一个更简单的方法,通过使用&&支票像第一次检查member.contactId != myself.contactId在HTML本身处理逻辑,如果它真的那么只有火storeRecentContact(member.fullProfile.xpid)方法来做。

这里你ng-click应该看起来像ng-click="member.contactId != myself.contactId && storeRecentContact(member.fullProfile.xpid)"现在你可以删除ng-disabled指令,这是没有用的。

标记

<a href="#/contact/{{ ::member.fullProfile.xpid }}" 
ng-click="member.contactId != myself.contactId && storeRecentContact(member.fullProfile.xpid)" 
...other attributes.. 
..... 
></a> 

Small Demo Plunkr

更新

要停止重定向你的链接到不同的页面,你可以使用ng-attr指令,将设置一个href标记值(您想重新定向你的SPA)通过评估{{}}的表达。如果你想重定向到#/contact/1那么你的href将是href="#/contact/{{ ::member.fullProfile.xpid }}",否则它将只是href=""为空白。假设您使用的条件是member.contactId不应等于member.contactId,如member.contactId != myself.contactId那么您不希望用户在联系详细信息页面上重定向您的SPA。这件事将通过ng-attr-href{{member.contactId != myself.contactId' ? #/contact/'+ member.fullProfile.xpid: '' }}处理会改变{{}}表达的href属性值对基础

<a ng-attr-href="{{member.contactId != myself.contactId' ? #/contact/'+ member.fullProfile.xpid: '' }}" 
    ng-click="member.contactId != myself.contactId && storeRecentContact(member.fullProfile.xpid)" 
    ...other attributes.. 
    ..... 
></a> 
+0

谢谢@pankajparkar,但那不起作用。我很确定ng-click函数“storeRecentContact”不是让元素被点击的东西,但是它是一个锚点标签的事实使得它可点击。 – Seeeyonnn

+0

@Seeeyonnn在这里看到的是演示plunkr http://plnkr.co/edit/lTCv8BlvtTRRfqGFWDnR?p=preview你应该错过了一些东西 –

+0

你的掠夺者忽略了我认为的重复锚定标签。我正在研究你的更新:ng-attr,@ pankajparkar,也许你可以稍微详细一点? – Seeeyonnn

ng-disabled所创建的禁用属性,它仅用于输入。

锚标记不是输入,因此无法禁用。你想要做的是改变你解决这个问题的方式。您可能想隐藏它(a元素),您可能需要指令删除href或将其替换为“#”或根据您的情况。

你也可以这样做:

ng-href="{{getRef(member, mySelf)}}",并从控制器计算此。如果你的条件是错误的,这应该正常显示,只需返回正常的链接。否则,您可以返回#

$scope.getRef = function(member, myself) { 
    if (member.contactId == myself.contactId) { 
     return "#"; 
    } 
    else { 
     return "#/contact/" + member.fullProfile.xpid; 
    } 
} 
+0

这将影响路由和结果将被SPA搞砸 –

+0

@Omri Aharon这是导致一个JavaScript错误,因为“成员”不能被读取 - 尝试两个$ scope.member和成员在js代码.. 。 – Seeeyonnn

+0

@Seeeyonnn尝试更新的一..他错过了通过这些参数 –