He enlazado a un elemento de DOM de una perspective usando octavos de final.
Cuando me cambio de una propiedad en el modelo subyacente cambia el DOM, todo ok.

Sin embargo, hay una manera de llegar a la envolvente del elemento DOM para que yo pueda agregar una clase cuando el modelo subyacente se actualiza de forma externa?

He utilizado enlace personalizado que me da acceso al elemento de DOM, pero me pregunto si hay una manera más sencilla directamente desde la perspective de la propiedad enlazada?

Gracias

código de ejemplo (Manuscrito)

SetMyCell(row: number, newValue: any) {

    var ditem = this._DataItems[row];

    //update the actual value    
    ditem.Producer(newValue);

    //Now I wish to decorate the DOM item this Producer property is 
    //bound to with a class. How to go about that?

}
Personalmente me acaba de enlazar los datos de la clase del elemento DOM. <div data-bind="attr: { class: functionToDetermineClass }"> O si usted tiene varias de las clases que siempre estará ahí <div data-bind="attr: { class: 'class1 class2 ' + functionToDetermineClass() }">
Gracias – he utilizado esta técnica en otros lugares – la cosa es, yo podría desear utilizar el DOM para otras manipulaciones donde podía realmente tener un ref! ¿Sabéis de alguna otra manera (no enlace personalizado)..
This te podría ayudar
lo siento – aunque interesante, se trata de eventos donde más información se pasa a – en el ejemplo, la actualización de la fuente a través de un evento externo (websocket) por lo que la fuente de crudo es todo lo que tengo que jugar con… Alguna otra idea?
Has leído la segunda respuesta? Se da una forma de obtener el elemento sin ningún eventos necesidad de ser activado, a pesar de que se supone que usted tiene el control sobre el id del elemento. Basado en el código de ejemplo, se ve como usted probablemente puede hacer esto. Si no, entonces voy a tener que seguir buscando.

OriginalEl autor Marcel | 2013-02-25

1 Comentario

  1. 11

    Puede abuso visible de la unión, por ejemplo, para ejecutar una función de pasar el $elemento y $datos.

    <span data-bind="visible: func1($element, $data)">Test span</span>

    vistazo a este el violín

    Sé que menciono más arriba que usted no desea utilizar un enlace personalizado pero todavía quiero señalar esta opción. aunque estoy usando un enlace personalizado de la lógica para modificar el elemento que va a suceder en el viewmodel cuando los cambios externos que suceda.

    ko.bindingHandlers.widget = {
        init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
            var elemObservable = valueAccessor();
            if (ko.isObservable(elemObservable)) {
                elemObservable(element);
            }
        }
    };
    
    var vm = function () {
        var self = this;
        .....
        self.spanElement = ko.observable();
        self.btnClick = function (){
            var elem = self.spanElement();
            $(elem).html("This is the span element");
        };
        ......
    };

    y el html sería

    <button data-bind="click: btnClick">change element text or something else</button>
    <span data-bind="widget: spanElement"></span>

    He actualizado el el violín así que usted puede ver en acción

    OriginalEl autor Gabe

Dejar respuesta

Please enter your comment!
Please enter your name here