Вложенный json-объект Angularjs с ng-повтором не работает при ionic

#angularjs #json #ionic-framework

#angularjs #json #ионный фреймворк

Вопрос:

Прежде всего, я довольно новичок в ionic и angularjs. Теперь я пытаюсь разработать приложение, и у меня возникают проблемы с отображением и поиском данных прямо сейчас.

У меня есть вложенный объект json, и я не могу отобразить его с помощью ng-repeat.

Вот объект json.

 $scope.nestedTestdata = [{
                "leadlist ": [{
                    "submitted_date": "01-01-2160",
                    "submission_value": {
                        "full_name": "Full Name ",
                        "phone": "This is test data.",
                        "source": "I hate you"
                    }
                },
                    {
                        "submitted_date": "01-01-2015",
                        "submission_value": {
                            "full_name": "full name",
                            "phone": "phone.",
                            "source": "I really really hate you"
                        }
                    },
                    {
                        "submitted_date": "01-01-2016",
                        "submission_value": {
                            "full_name": "I am awesome",
                            "phone": "HP phone.",
                            "source": "I hate you"
                        }
                    }]
            }];
  

Вот как я отображаю.

  <div class="lead_row" ng-repeat="data in nestedTestdata.leadlist | filter: model.search" >

            <div class="lead_col">{{data.submitted_date | date : 'dd-MMM-yyyy'}}</div>
            <div class="lead_col">{{data.submission_value.source}}</div>
            <div class="lead_col">{{data.submission_value.full_name}}</div>
            <div class="lead_col">{{data.submission_value.phone}}</div>    
        </div>
  

Когда я меняю его на следующий объект json, он также может отображать и выполнять функцию поиска.

  $scope.testdata = [{
                "submitted_date": "01-01-2160",
                "submission_value": {
                    "full_name": "Search is working",
                    "phone": "This is fucking test data.",
                    "source": "I hate you"
                }
            },
                {
                    "submitted_date": "01-01-2015",
                    "submission_value": {
                        "full_name": "Fucking full name",
                        "phone": "Fucking phone.",
                        "source": "I really really hate you"
                    }
                },
                {
                    "submitted_date": "01-01-2016",
                    "submission_value": {
                        "full_name": "I am awesome",
                        "phone": "Fucking HP phone.",
                        "source": "I hate you"
                    }
                }];
  

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

Пожалуйста, проверьте полный код по следующей ссылке. http://play.ionic.io/app/720567016712

Заранее большое вам спасибо.

Ответ №1:

nestedTestData содержит массив. Внутри массива есть объект.

 ng-repeat="data in nestedTestdata[0].leadlist | filter: model.search"
  

ИТАК, код должен быть следующим:

  <div class="lead_row" ng-repeat="data in nestedTestdata[0].leadlist | filter: model.search" >
                <div class="lead_col">{{data.submitted_date | date : 'dd-MMM-yyyy'}}</div>
                <div class="lead_col">{{data.submission_value.source}}</div>
                <div class="lead_col">{{data.submission_value.full_name}}</div>
                <div class="lead_col">{{data.submission_value.phone}}</div>    
            </div>
  

Комментарии:

1. Вы просто спасаете мой день. Я полностью игнорирую это. Большое вам спасибо. Я приму ответ, как только смогу.

Ответ №2:

Итак, у вас есть массив, затем вы определяете другой массив с объектом с ключом ‘leadlist’. Приведенный выше ответ может решить вашу проблему, или вы можете просто удалить массив над вашим ключом, вы можете просто получить к нему доступ в обычном режиме data.nestedTestData

Ниже показано, как вы могли бы его переписать:

 `$scope.nestedTestdata = {
    "leadlist" : [{
        "submitted_date": "01-01-2160",
        "submission_value": {
         "full_name": "Full Name ",
         "phone": "This is test data.",
          "source": "I hate you"  
    }

},
{
    "submitted_date": "01-01-2015",
    "submission_value": {
        "full_name": "full name",
        "phone": "phone.",
        "source": "I really really hate you"
    }
},
{
    "submitted_date": "01-01-2016",
    "submission_value": {
        "full_name": "I am awesome",
        "phone": "HP phone.",
        "source": "I hate you"
    }  
}]  
  

};`

Ответ №3:

Вы можете использовать вложенный ng-repeat , он также будет работать, если в нем есть несколько объектов $scope.nestedTestdata . Вот рабочая скрипка

     <div ng-controller="MyCtrl">
    <div class="lead_row" ng-repeat="data in nestedTestdata">
        <div ng-repeat="list in data.leadlist">
            <div class="lead_col">{{list.submitted_date | date : 'dd-MMM-yyyy'}}</div>
            <div class="lead_col">{{list.submission_value.source}}</div>
            <div class="lead_col">{{list.submission_value.full_name}}</div>
            <div class="lead_col">{{list.submission_value.phone}}</div>
        </div>
    </div>
</div>
  

пожалуйста, удалите пробел после "leadlist "