Я пытаюсь отобразить список данных в иерархическом представлении. Мои данные выглядит примерно так:AngularJS, отображающий иерархические данные
items:[
{
"model_id": "1",
"model_type_id": "1",
"name": "Parent 1",
"model_parent_id": ""
},
{
"model_id": "2",
"model_type_id": "1",
"name": "Parent 2",
"model_parent_id": ""
},
{
"model_id": "3",
"model_type_id": "2",
"name": "Child 1",
"model_parent_id": "1"
},
{
"model_id": "4",
"model_type_id": "2",
"name": "Child 2",
"model_parent_id": "2"
}
]
Мой контроллер выглядит так:
myApp.controller('ModelController', ['$scope', 'ModelFactory',
function ($scope, ModelFactory) {
$scope.init = function (id) {
$scope.brandId = id;
getModels($scope.brandId);
};
function getModels(brandId) {
ModelFactory.GetModels(brandId)
.success(function (mdls) {
$scope.models = mdls;
console.log($scope.mdls);
})
.error(function (error) {
$scope.status = 'Unable to load model data: ' + error.message;
console.log($scope.status);
});
};
}
]);
Мой HTML выглядит следующим образом:
<div ng-controller="ModelController" ng-init="init(brand.ID)">
<ul ng-sortable class="block__list block__list_words">
<li ng-repeat="model in models | filter: {model_type_id:1} ">{{model.model_name}} - {{model.model_id}}
<div ng-controller="ModelController" ng-init="init(brand.ID)">
<ul ng-sortable class="block__list block__list_words">
<li ng-repeat="m in models | filter: {model_type_id:2} | filter:{model_parent_id:model.model_id}">
{{m.model_name}} - {{m.model_parent_id}}
</li>
</ul>
</div>
</li>
</ul>
</div>
Фильтр не работает, когда я пытаюсь для фильтрации на внутреннем контроллере с внешним контроллером. Я получаю обоих детей, отображаемых ниже каждого родителя. Как я могу получить его так, чтобы родительский указатель отображался, и отображаются только дети, где childs model_parent_id равно model_id родителя?
Это может оказаться затруднительным в моей ситуации. Данные хранятся в одной таблице в базе данных. У меня есть .net-приложение и создание функции для извлечения данных, а затем сохранить его в объекте JSON правильно, было бы более трудоемким, чем фильтрация, как мне хотелось бы. – user1024941
Вы можете выполнить обработку данных в javascript после получения данных, после этого я добавлю пример. – Icycool