AngularJS ng-if调用函数

时间:2019-06-11 10:31:24

标签: javascript angularjs

我想使用ng-if调用函数来获取文本数据,但是我不知道为什么ng-if不起作用,它会打印所有文本数据。请帮忙。非常感谢。

我尝试仅使用ng-if是可行的

http://jsfiddle.net/grm7cy2x/1/

这是使用ng-if调用功能的代码

http://jsfiddle.net/g8p2x70f/51/

1 个答案:

答案 0 :(得分:0)

原因是您从checkValidDataType返回的内容被视为字符串,不再将其视为一段代码。换句话说,是这样的:

< ... ng-if="'data.partment == 2 || data.partment == 3 '">

(请注意此处的单引号)

要更好地理解它,您可以尝试类似的

< ... ng-if="'cat'">

JavaScript中任何非空字符串都是true,因此从函数返回的字符串始终返回true(就像字符串'cat'一样,这就是ng-if渲染每个单选按钮的原因。

为了解决这个问题,您可以这样编写代码:

<div ng-repeat="data in records">     
  <div ng-if="checkValidDataType(1, data)">       
    <input type="radio" name="{{data.name}}" value="{{data.value}}">
    {{data.text}}
  </div>
</div>
$scope.checkValidDataType = function(someValue, data){
     if(someValue == '1')
         return data.partment == 1 || data.partment == 2;
     else if(someValue == '2')
         return data.partment == 1 || data.partment == 3;
    else
        return data.partment == 2 || data.partment == 3;
 }