当函数返回1时,显示h2,但即使它返回1,也从不显示标题。
以下角度代码:
<md-virtual-repeat layout-wrap class="toast" ng-repeat="member in members| filter:searchText | orderBy:orderByFunction" >
<div class="subtitle" ng-show="showContrib(member) == 1" >
<h2> CONTRIBUTORS {{member.price}} -- {{member.amount}}</h2>
</div>
<div class="subtitle" ng-show="showTop(member) == 1" >
<h2> TOP CONTRIBUTORS {{Number(member.price)}} -- {{Number(member.amount)}}</h2>
</div>
<md-whiteframe class="md-whiteframe-z3 frieed" style="margin:6px; padding: 19px;" flex-sm="35" flex-gt-sm="25" flex-gt-md="20" layout layout-align="center center">
{{ member.amount}}
</md-whiteframe>
</md-virtual-repeat>
使用此js代码:
$scope.showTop = function(member){
if($scope.topShow == 1){
return 0;
}
if(parseInt(member.price) < parseInt(member.amount)){
console.log('came here price');
$scope.topShow = 1;
return 1;
}
return 0;
};
$scope.showContrib = function(member){
$scope.conShow = 1;
// console.log('price='+member.price+"amount"+member.amount);
if($scope.conShow == 1){
return 0;
}
if(parseInt(member.price) == parseInt(member.amount)){
$scope.conShow = 1;
return 1;
}
return 0;
};
它始终评估为false,即使我在console.log中可以看到topShow和conShow正在变为1.
答案 0 :(得分:1)
我认为您将conShow
设置为1,然后设置为return 0
。见这里:
$scope.conShow = 1;
if($scope.conShow == 1){
return 0;
}
所以它实际上并没有检查你以后的逻辑,而是返回0以外的任何东西。
答案 1 :(得分:1)
这里有两个问题。
正如@LokiSinclair指出的那样,ng-show
将始终返回0.
其次,是在ng-show
中使用一个函数。当您使用函数确定$scope.showTop
的值时,此函数将反复重新评估。在$scope.topShow
函数中,将{{1}}的值更改为1并返回1,但由于更改了作用域对象的值,因此在再次调用此函数之前,可能需要几毫秒。只有这次它会返回0。