2013-06-01 4 views
1

Я пытаюсь построить аккордеон с Угловым UT Bootstrap (http://angular-ui.github.io/bootstrap/#/accordion). На How do I set model according to chosen accordion group. UI Bootstrap я нашел рабочее решение для использования шаблона.Как установить шаблонные переменные в Угловом UT Bootstrap? (аккордеон)

В моем коде я добавить шаблон с <script type="text/ng-template" id="template/accordion/accordion-group.html">

В этом шаблоне можно использовать {{heading}} установленный <accordion-group heading="{{group.title}}" content="{{group.content}}" ng-repeat="group in groups"></accordion-group>.

Но как установить другие настраиваемые переменные шаблона? Я также попытался установить content="{{group.content}}" в теге аккордеона. Даже если он установлен, я не знаю, как его использовать, попробовал {{content.group}} {{content}} и {% content %}.

Полный код на: http://plnkr.co/dSIVGg64vYSTAv5vFSof

ответ

1

Смотрите отредактированный plunker: http://plnkr.co/edit/8YCUemqILQy3knXqwomJ

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

Вместо контроллеров гнездования я бы рекомендовал преобразовать CollapseDemoCtrl в директиву. Затем вы можете передать {{group.content}} или любой другой контент в эту директиву.


EDIT: Пример того, как передать данные директивы сфера

HTML, будет что-то вроде этого:

<span ng-repeat="group in groups"> 
    <div testDirective content="group.content" title="group.title"> </div> 
</span> 

директива будет выглядеть примерно так:

angular.module('testModule', []) 
    .directive('testDirective', function(){ 
    return { 
     restrict: 'A', 
     scope: { 
     content:'=content', 
     title: '=title' 
     }, 
     template: '<h1>{{title}}<h1> <div>{{content}}</div>', 
     link: function(scope, element, attrs) { 
     } 
    } 
    }); 
+0

спасибо. Кажется, вы решили мою проблему, но не ответили на вопрос. Причина, когда я не встраиваю контроллер в шаблон, я не могу использовать '{{group.content}}' в шаблоне. –

+0

Это потому, что вы используете группу «ng-repeat =» в группах «» для итерации по массиву групп. Поэтому для начала '{{group}}' доступно только в 'ng-repeat'. Затем содержимое передается в «аккордеон» через трансляцию и поэтому недоступно как «{{content}}' или '{{group.content}}'. Этот учебник по трансклюзии должен помочь вам: [http://www.youtube.com/watch?v=cjrBTjMvruI](http://www.youtube.com/watch?v=cjrBTjMvruI) – winkerVSbecks

+1

Альтернативным подходом было бы связать '{{group.content}}' к модели в пределах области действия гармоники, например '{{mycontent}}'. Затем в шаблоне аккордеона вы можете получить доступ к исходному контенту с помощью '{{mycontent}}'. Но вам не нужно ничего делать, потому что любой код, который вы помещаете в теги '', передается в тело аккордеона. – winkerVSbecks

Смежные вопросы