我的代码
<span data-ng-repeat="s in d.sInfo track by $index" title="{{ s.sFirstName }} {{ s.sLastname }}">
<strong>{{ s.sFirstName }} {{ s.sLastname }}</strong> ({{ s.permission }})<br>
</span>
我想要的是,如果登录用户和共享用户相同,那么我将显示&#34;你&#34;
我正在尝试这样的事情,
<strong>{{ s.sFirstName }} {{ s.sLastname }} || s.name == s.FirstName s.Lastname |"YOU"</strong> ({{ s.permission }})
我可以在控制器中做一个循环。但是有没有办法在视图中实现这个
答案 0 :(得分:2)
尝试使用ng-if
指令
<strong ng-if="!yourConditionHere">{{ s.sFirstName }} {{ s.sLastname }}</strong>
<strong ng-if="yourConditionHere">YOU</strong>
将yourConditionHere
替换为您的条件。
答案 1 :(得分:1)
它看起来不太好(在这种情况下),但它可能在其他情况下有用(表达式更紧凑):你可以使用三元运算符(cond) ? expr : expr
<strong>{{
((u.firstname===user.firstname)&&(u.lastname===user.lastname))?
'YOU':
u.firstname+' '+u.lastname}}
</strong>
另请参阅此 short demo 。
注意强>
提到的其他方法(例如使用ngShow
,ngIf
等)是可行的解决方案,但它们涉及创建/销毁/操纵其他DOM元素,如果这些元素可能对性能产生显着影响, users
列表变大了。
ngSwitch
到同一端。
答案 2 :(得分:1)
您可以使用ng-if
或ng-show
或ng-hide
指令或scope
功能
使用ng-if指令&#39;
<strong ng-if="s.FirstName"> {{ s.sFirstName }} {{ s.sLastname }} </strong>
<strong ng-if="!s.FirstName"> You </strong>
使用ng-show指令&#39;
<strong ng-show="s.FirstName"> {{ s.sFirstName }} {{ s.sLastname }} </strong>
<strong ng-show="!s.FirstName"> You </strong>
使用ng-hide指令&#39;
<strong ng-hide="!s.FirstName"> {{ s.sFirstName }} {{ s.sLastname }} </strong>
<strong ng-hide="s.FirstName"> You </strong>
使用范围功能
在您的情况下,您还可以使用scope
函数获取名称
<strong> {{getName(s)}} </strong>
$scope.getName = function (s) {
if (s.FirstName) return s.FirstName + ' ' + s.LastName;
return 'You';
}
答案 3 :(得分:1)
ng-if工作得很好。
您还可以设置一个返回用户显示名称的过滤器,以避免在您的标记中添加逻辑
我正在设置一个jsfiddle来向你展示一个例子。
编辑:
你去了
angular.filter('userDisplayName', function(loggedInUser) {
return function(user) {
if ( loggedInUser.firstName === user.firstName ) return "YOU";
return user.firstName
};
});
答案 4 :(得分:0)