Использование ng-if для проверки угловой переменной из другой директивы в angularjs

#javascript #angularjs

#javascript #angularjs

Вопрос:

Я новичок в angular. У меня есть задача отобразить данные json в определенном дизайне, но я понятия не имею о вложенности json. Возможно ли проверить, являются ли данные json или массивом json, а затем отобразить выходные данные.

Здесь я пытаюсь отобразить данные, только если это массив. Но это не работает. Пожалуйста, помогите.

 <!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="myApp">

<div ng-controller="readJson as rj">


<div ng-repeat="d in rj.data">
<ul>
<div ng-model="myVar" ng-init="myVar = "{{isArray(d.third)}}>
<div ng-if="myVar">
<li>{{d.third}}</li>

</div>
</ul>
</div>
</div>


</div>

</body>
<script>
(function(){
var app=angular.module('myApp',[]);

app.controller('readJson',function($scope){
 $scope.isArray = angular.isArray;
this.data=[{"first":"one","second":"two","third":"three"},
{"first":"ONE","second":"two","third":"three"},
{"first":"onE","second":"two","third":
[
{"first":"1one","second":"2two","third":"3three"},
{"first":"1ONE","second":"2two","third":"3three"}
]}];

});
})();
</script>

</html>
  

Ответ №1:

Вот так. В этом примере данные будут отображаться только тогда, когда «третий» параметр является массивом. https://plnkr.co/edit/EX0BvcYrLPFbiN2ezlqQ

 <div ng-repeat="d in data">
    <ul>
        <div ng-init="myVar = isArray(d.third)"></div>
        <div ng-if="myVar">
            <li>{{d.third}}</li>
        </div>
    </ul>
</div>
  

Проблема была в ng-init=»myVar = «{{isArray(d.third)}} — вам нужно убедиться, что isArray(d.third) находится в выражении (между «») и нет необходимости использовать синтаксис {{}} в директиве ng-init. Она вычислит выражение для вас (посмотрите пример).