recorrer objetos objeto matriz eliminar elementos elemento contar asociativos asociativo array agregar javascript jquery mvvm knockout.js viewmodel

javascript - objetos - ¿No sabe cómo obtener claves de enlace de datos y valores observables usando elemento?



matriz javascript (2)

Necesito obtener claves de enlace de datos y valorizar usando elemento.

<select id="selector" data-bind="options:selectOptions,value:selectedValue"></select> var ViewModel = { selectOptions:ko.observableArray([...]), selectedValue:ko.observable() ... some other stuff ... }

En otro modelo de vista, puedo acceder al elemento dom ahora necesito actualizar el contexto de enlace del elemento observable.

¿Cómo puedo obtener claves y valores vinculados a datos?

necesito algo como esto

{ options:selectOptions, value:selectedValue }


Bueno, te recomiendo que uses esto. Puede manejarlo en javascript end usando el jquery unobtrusive plugin .

http://joel.net/unobtrusive-data-binding-for-knockout-js

Para esto puedes crear un objeto

var binding = { options: ''tickets'', optionsCaption: "''Choose...''", optionsText: "''name''", value: ''chosenTicket'' }

Y úsalo así

$(''#tickets'').dataBind(binding);

En lugar de esto

<select data-bind=" options: tickets, optionsCaption: ''Choose...'', optionsText: ''name'', value: chosenTicket " ></select>

de esta manera tendrá el objeto binding disponible para volver a usar y su código estará bastante limpio. Asegúrese de llamarlo antes de applyBinding .


ko.dataFor (elemento) ayudará. Ver -

http://knockoutjs.com/documentation/unobtrusive-event-handling.html

En su otro modelo de vista donde tiene el elemento, llame a:

var bound_vm = ko.dataFor(element)

bound_vm será lo que sea view-model vinculado a ese elemento.

No creo que puedas obtener la clave / vals del enlace original; KO lo ha analizado en funciones. Presumiblemente, en su otro modelo de vista, ¿quiere cambiar lo que esté vinculado a las opciones, pero no sabe cómo se llama? Puede hacer algo como esto con jQuery para analizar el atributo de enlace de datos original:

OtherViewModel: { the_logic: function() { // We have the element already var element = [already set to a DOM node] // Get the view-model bound to the element var bound_vm = ko.dataFor(element) // Parse the original binding attribute on the element $($(element).attr("data-bind").split(",")).each( function(idx, binding) { var parts = binding.split(":") binding_info[parts[0].trim()] = parts[1].trim() } ) // Now binding_info should hold what you want. EG we can set whatever // the options binding is bound to like this: bound_vm[binding_info[options]]([1,2,3) } }