ng-show功能不起作用

时间:2016-01-12 07:53:13

标签: javascript angularjs

当函数返回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.

2 个答案:

答案 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。