example data bootstrap css html5 twitter-bootstrap knockout.js durandal-2.0

css - bootstrap - data-toggle="collapse"



Generación automática de direcciones Div para Bootstrap Accordion Unión de menú con Knockout js (1)

Estoy creando un menú lateral utilizando el colapso del acordeón de arranque y haciendo uso de la unión js knockout. Mi problema es asignar los identificadores de elemento HTML correctos para alternar y colapsar, tal como lo requiere el programa de arranque. He pensado utilizar el $ indexin knockout para autogenerar la identificación. Pero no viene bien. Ver mi código a continuación y comentarios:

<div id="content" style="font-size: 8.8pt"> <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> <div class="panel panel-default" id="news"> <div class="panel-heading" role="tab" id="headingOne" data-bind="foreach: accordionItems()"><!--accordionItems is an observableArray with my accordion objects. Object has a header and a list of linkitems. Each linkItem object has linkText and url--> <a style="text-decoration:none;" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne"><!--want to do something like: href="#"+$index--> <p class="panel-title" data-bind="text: nameHead"></p> </a> <!--binding a collapse header here.--> <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne"><!--want to autogenerate the id here using knockout for reference above--> <ul class="Newsbar panel-body" data-bind="foreach: list"> <li><a data-bind="attr: { href: url }, text: linkText"></a></li> </ul> </div> </div> </div> </div> </div>


Bueno, ya he hecho algo como esto antes de que esto ayude

<div class="panel-heading" role="tab" id="headingOne" data-bind="foreach: accordionItems()"> <a style="text-decoration:none;" data-toggle="collapse" data-parent="#accordion" aria-expanded="true" aria-controls="collapseOne" data-bind="attr:{href:''#collapseOne''+$index() }" > <p class="panel-title" data-bind="text: nameHead"></p> </a> <!--binding a collapse header here.--> <div class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne" data-bind="attr:{id:''collapseOne''+$index()}"> <ul class="Newsbar panel-body" data-bind="foreach: list"> <li><a data-bind="attr: { href: url }, text: linkText"></a></li> </ul> </div> </div>

Déjame explicarte aquí:

Solo necesitas crear una id dinámica y una href para trabajar con esto. Es una suerte que tenga un bucle terminado si en caso de que existan bucles múltiples use $parentContext.index() y así sucesivamente.

Solo necesita usar attr para crear una identificación dinámica y href usando $ index () que le proporciona una identificación única cada vez que se repite.