Tengo una necesidad de enlazar algo de HTML a un objeto, pero mi problema es que no conozco las propiedades del objeto en el momento del desarrollo.knockout JS se une a las propiedades del objeto
que tienen una propiedad selectedItem
en mi modelo de vista principal que he unido a una sección en mi HTML:
<div data-bind="with: selectedItem">
</div>
Ahora quiero para generar una tabla basada en el nombre de propiedad y de propiedad valores:
<div data-bind="foreach: [WHAT DO I PUT HERE?]">
<label class="control-label"><span data-bind="text: [OR HERE?]" /></label>
</div>
No tengo ni idea de cómo hacerlo. Cualquier ayuda es muy apreciada.
Además, ampliándolo ligeramente, me gustaría manejar las propiedades del objeto encuadernado de manera diferente, como si la propiedad fuera solo un tipo primitivo, solo lo muestre, pero si es otro objeto/matriz, entonces maneje especialmente.
¿Se puede hacer esto?
Este es un buen comienzo, pero fallará para ver exactamente cómo esto me dará acceso a las propiedades del modelo de vista que no conozco en el momento del diseño. ¿Puedes por favor elaborar? – Mark
Claro. La propiedad "seleccionada" contiene el nombre de la propiedad para seleccionar en el modelo de vista (se puede cambiar en tiempo de ejecución). Al cambiar este valor (observable) se activará la actualización de los "datos" de la propiedad (observable computable). Esta última propiedad selecciona dinámicamente (ver _self [selección] _) los datos (list1 o item1) para representar usando la plantilla correspondiente. Espero que esto aclare el ejemplo. – gbs
Ah, veo lo que has hecho, gracias. Pero tal vez estoy entendiendo mal tus pensamientos, o tal vez no he descrito el tema lo suficientemente bien. Si la clase Modelo tiene propiedades X (en tu caso 2 pero la mía tiene alrededor de 20), quiero enumerar todas las propiedades y elegir una plantilla según el tipo de esa propiedad. En su ejemplo, ha codificado las propiedades en la lista de selección, donde como no las conozco ... ¿tiene sentido? – Mark