Я все еще довольно новичок в AngularJS. После нескольких онлайн-уроков я использовал функцию javascript внутри директивы ng-if
, чтобы проверить, существует ли уже имя группы в массиве. Если это так, блок ng-if
пропускается для следующей итерации ng-repeat
. Если это не так, добавьте имя группы в массив и создайте блок ng-if
. Вот как HTML-код выглядит в частичном:
HTML
<span ng-if="checkGroups(service.group.name)">
<!--Make nested list-->
</span>
Это упрощенная версия javascript:
JAVASCRIPT
(function () {
'use strict';
MainApp.controller('MainController', [
'$scope',
'Filters',
'helper',
'$timeout',
'$filter',function(
$scope,
Filters,
helper,
$timeout,
$filter) {
var MainCtrl = this;
//Function to check group array variable
$scope.usedGroups = [];
$scope.checkGroups = function(name) {
var isValid = true;
for(var i = 0; i < $scope.usedGroups.length; i++) {
if($scope.usedGroups[i] == name){
isValid = false;
break;
}
}
if(isValid == true){
$scope.usedGroups.push(name);
console.log($scope.usedGroups);
}
return isValid;
}
}
]);
})();
Я использовал console.log()
для возврата значений, и я получаю массив с именами групп внутри, а также с возвращаемым значением true или false. Проблема в том, что функция ng-if
возвращает только false. Если я переключу функцию директивы на «checkGroups (service.group.name) == false», она будет продолжать создавать HTML-блок независимо. Любые идеи, что я могу сделать, чтобы это исправить?