У меня есть чрезвычайно иерархическая структура JSON как переменная области в моем контроллере AngularJS. Я хочу объединить разные разделы этой переменной. Я думал об использовании ng-init
, чтобы указать, где находится структура. Вот код:AngularJS: Я явно не понимаю использование ng-init
my_app.js:
(function() {
var app = angular.module("my_app");
app.controller("MyController", [ "$scope", function($scope) {
$scope.things = {
name: "a",
children: [
{
name: "a.a",
children: [
{ name: "a.a.a" },
{ name: "a.a.b" }
]
},
{
name: "a.b",
children: [
{ name: "a.b.a" },
{ name: "a.b.b" }
]
}
]
}
}]);
});
my_template.html:
<div ng-app="my_app" ng-controller="MyController">
<ul>
<li ng-init="current_thing=things.children[0]" ng-repeat="thing in current_thing.children>
{{ thing.name }}
</li>
</ul>
</div>
Я бы ожидал, чтобы отобразить список:
- a.a.a
- a.a.b
Но это ничего не отображает.
Конечно, если я задаю цикл явно (ng-repeat="thing in things.children[0].children"
), он работает нормально. Но этот небольшой фрагмент кода шаблона должен выполняться в разных точках моего приложения на разных уровнях «вещей».
(Просто, чтобы сделать жизнь сложной, я могу получить текущий уровень вещи, используя стандартный JavaScript или еще с помощью Django сообразительности.)
Любые идеи?
Спасибо. Это зафиксировало этот игрушечный пример. Тем не менее, он по-прежнему не работает в реальном коде. Мне нужно немного подумать и, возможно, вернуться к вам. – trubliphone
Мое удовольствие. Принципы должны быть одинаковыми. Имейте в виду, однако, что ng-init стоит дорого, и это в значительной степени отлаживается. Намного сложнее отладить ng-init над правильными структурами данных в контроллере поддержки. –