Para referencia y para cualquier otra persona que se encuentre con este problema, resulta ser al menos algo obvio en retrospectiva.
La plantilla de Knockout construida en "anónima" funciona muy bien en muchos casos, pero con JQMobile, puede ser un poco peculiar.
Esto se debe a que JQMobile ajustará el contenido de la plantilla anónima cuando se carga la página, al igual que con el resto del contenido.
Luego, más adelante, cuando uses la función ApplyBindings de knockout, la eliminación directa agregará los elementos aplicables, justo como debería. Como han insinuado muchas publicaciones y respuestas, DEBES llamar collapsible() a los elementos recién creados, a través de algo como esto.
$("div[data-role='collapsible']").collapsible({refresh: true});
No hay problema. SIN EMBARGO, si JQM ya ha aplicado el formato, entonces la plantilla anónima ya ha sido "renderizada" por JQM, por lo que la vuelve a llamar llamando a collapsible causando todo tipo de resultados funky, incluyendo doble encabezado, collapsibles anidados, etc.
The solución para mí era utilizar la función de "plantilla denominada" Knockout, y sólo hay que poner la plantilla para hacer que los elementos plegables en una etiqueta, como esto:
<script type="text/html" id="alarm-template">
<div data-role="collapsible" data-collapsed="true" data-collapsed-icon="arrow-d" data-expanded-icon="arrow-u" data-enhance="false">
<h3 data-bind="text:name"></h3>
<p>The content here</p>
<p data-bind="text: name"></p>
</div>
</script>
hacer esto impide JQM de la "representación" de los elementos de plantilla cuando el cargas de página, por lo que se mostrarán correctamente cuando se generen realmente.
EDITAR: Lo anterior funciona bien para collapsibles NO en un conjunto plegable, pero, si están en un conjunto, he encontrado el estilo de los elementos (en particular, el redondeo de la esquina para indicar que pertenece a un conjunto) no funciona bien.
De lo que puedo decir, hay 2 problemas:
La primera es que acaba de desencadenar "Crear" en realidad no actualizar el estilo de todos los botes hinchables en el conjunto. para hacer eso tienes que hacer ...
$("div[data-role='collapsible-set']").collapsibleset('refresh');
Pero, hay un problema peor. JQM "marca" el último elemento del conjunto como el "último elemento". Ese hecho luego se usa para determinar cómo diseñar el último artículo a medida que se expande/contrae.
Dado que Knockout en realidad no reconstruye todo el conjunto (de velocidad), cada vez que llama al método de actualización, JQM marca el último elemento como "último", pero nunca elimina las marcas de elementos anteriores. Como resultado, si comienza desde una lista vacía, CADA elemento termina siendo marcado como "último" y el estilo falla debido a esto.
He detallado la solución para eso en github en un informe de problemas.
https://github.com/jquery/jquery-mobile/issues/4645
Brillante, me ahorró un montón de trabajo. ¡Gracias! –