Я пытаюсь создать контроллер для каждого элемента в моем аккордеоне ng-bootstrap, но масштабирование не работает, как я ожидаю. Я делаю что-то неправильно? Если я добавлю контроллер в div внутри моей группы аккордеона ng-repeat, это, похоже, сработает.Могу ли я использовать ng-контроллер в группе аккордеона бутстрапа?
В следующем примере SubVar не отображается, но SubVar2 делает.
http://plnkr.co/edit/VLFT133dz3uae887S6qI?p=preview
HTML
<accordion close-others="oneAtATime">
<accordion-group ng-repeat="group in groups" ng-controller="SubCtrl">
<accordion-heading>
{{group.title}} can have markup, too! <i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': status.open, 'glyphicon-chevron-right': !status.open}"></i><br>
SubVar: {{sub_var}}
</accordion-heading>
{{group.content}}<br>
SubVar: {{sub_var}}
<div ng-controller="SubCtrl">
SubVar2: {{sub_var}}
</div>
</accordion-group>
</accordion>
Javascript
angular.module('ui.bootstrap.demo', ['ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('AccordionDemoCtrl', function ($scope) {
$scope.oneAtATime = true;
$scope.groups = [
{
title: 'Dynamic Group Header - 1',
content: 'Dynamic Group Body - 1'
},
{
title: 'Dynamic Group Header - 2',
content: 'Dynamic Group Body - 2'
}
];
});
angular.module('ui.bootstrap.demo').controller('SubCtrl', function ($scope) {
console.log("SUBCTRL ...", $scope.group.title);
$scope.sub_var = $scope.group.title[$scope.group.title.length-1]
console.log("SUBCTRL ...", $scope.sub_var);
});
Похоже, аккордеон-группы transcludes данных внутри и поддерживает его собственный контроллер и возможности для @header и isOpen и т. д., поэтому я скажу, если вы не нарушите директиву. --- https://github.com/angular-ui/bootstrap/blob/master/src/accordion/accordion.js#L57 – Dylan