2012-11-05 12 views
5

Sto usando knockout.js. Ho creato una consuetudine vincolante e applicata sul tag di ancoraggio in questo modo:come chiamare la funzione di aggiornamento binding originale knockout

<a data-bind="custom : { param1 : 'text', param2: 'text' }">delete</a> 

ko.bindingHandlers.custom = { 
    init: function (element, valueAccessor, allBindingsAccessor) { 
     alert("init"); 
    }, 
    update: function (element, valueAccessor, allBindingsAccessor) { 
     alert("update"); 
    } 
} 

Quando ho prima carica la pagina sia le init e update funzioni chiamate. Ma quando clicco su Elimina collegamento update la funzione non è chiamata. Voglio chiamare la funzione di aggiornamento del mio binding personalizzato ogni volta che clicco sul link di cancellazione. Cosa sto facendo di sbagliato qui?

risposta

5

La funzione di aggiornamento viene richiamata inizialmente quando knockout applica i binding e se vengono modificati eventuali riferimenti osservabili.

La funzione di aggiornamento non fa riferimento ad alcuna osservabile e pertanto non viene richiamata oltre la chiamata iniziale.

Se si desidera richiamare la funzione quando si fa clic su di essa, è necessario utilizzare invece il binding click.

+0

Grazie per la risposta, ma did'nt capito come utilizzare cliccare vincolante per chiamare la funzione di aggiornamento, possono u si prega di fornire un breve esempio –

+0

bene sarebbe dipenderà da ciò che si vuole essere in grado di fare con quelli parametri. Non c'è molto su cui lavorare nel tuo esempio. Hai avuto bisogno di quei valori nell'azione? –

0

È necessario chiamare una funzione al clic di "Elimina", quindi applicare nuovamente il binding in quella funzione. Il tuo problema sarà risolto. Perché hai un valore di bind quando la prima volta viene caricato, non sul clic di eliminazione.

<a data-bind="custom : { param1 : 'text', param2: 'text' }" 
    onclick='delete()'>delete</a> 

<script type=javascript> 
    function delete(){ ko.applyBindings(ko.bindingHandlers.custom);} 
</script> 
Problemi correlati