Причина в том, что то, что вы возвращаете из checkValidDataType
, обрабатывается как строка, она больше не оценивается как кусок кода. Другими словами, вот как это выглядит:
< ... ng-if="'data.partment == 2 || data.partment == 3 '">
(обратите внимание на одинарные кавычки)
Чтобы понять это лучше, вы можете попробовать что-то вроде
< ... ng-if="'cat'">
Любая непустая строка имеет значение true в JavaScript, поэтому строки, которые вы возвращаете из своих функций, всегда возвращают 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;
}