knockout.js - example - KnockoutJS-Enlace de datos a una colección de diccionarios
knockout js tutorial (3)
Normalmente, cuando se trata de un diccionario, deseará asignarlo a una matriz que contiene objetos con propiedades clave / valor.
Sería algo como:
function mapDictionaryToArray(dictionary) {
var result = [];
for (var key in dictionary) {
if (dictionary.hasOwnProperty(key)) {
result.push({ key: key, value: dictionary[key] });
}
}
return result;
}
Muestra aquí: http://jsfiddle.net/rniemeyer/7yDTJ/
¿Cómo uso KnockoutJS para enlazar una colección de diccionarios a una lista de selección?
Si mi diccionario de "Destinos" se ve así en JSON:
{"Europe":"Europe incl Egypt, Turkey & Tunisia","ANZO":"Australia & New Zealand","WorldwideUSA":"Worldwide (incl USA & Canada)"}
¿Cómo puedo enlazar esto a una lista de selección. Algo como esto:
data_bind="value: Destination, options: Destinations.Value, optionsText: Destinations.Key"
Sé que esto ya ha sido respondido pero pensé que compartiría una solución más completa.
https://github.com/jamesfoster/knockout.observableDictionary
Aquí hay un jsfiddle que lo demuestra
Esperemos que alguien más lo encuentre útil.
Una opción más simple si está creando la API del servidor es simplemente convertir el diccionario a una matriz en el servidor y devolver la matriz:
Dictionary<string, string> myDict = ... ;
return myDict.toArray(); // returns KeyValuePair<string, string>[]
Ahora puedes enlazar fácilmente la matriz en nocaut ...
<select class="form-control"
data-bind="options: opts, optionsText: ''Value'', optionsValue: ''Key'', optionsCaption: ''Show All'', value: filter.myVal">
</select>