2012-11-05 9 views
5

Używam knockout.js. Stworzyłem zwyczaj wiązania i zastosować je na tagu zakotwiczenia tak:jak wywołać funkcję aktualizacji niestandardowej wiązania nokaut

<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"); 
    } 
} 

Kiedy po raz pierwszy załadować stronę Zarówno init i update funkcje tzw. Ale kiedy klikam na link usuwania update funkcja nie jest połączeniem. Chcę wywołać funkcję aktualizacji mojego powiązania niestandardowego za każdym razem, gdy kliknę link usuwania. Co robię źle tutaj?

Odpowiedz

5

Funkcja aktualizacji jest wywoływana tylko wtedy, gdy odwołanie stosuje powiązania i jeśli jakiekolwiek obserwowane obserwowane obiekty są zmieniane.

Twoja funkcja aktualizacji nie odwołuje się do żadnych obserwowalnych i dlatego nie jest wywoływana ponownie po pierwszym połączeniu.

Jeśli chcesz, aby twoja funkcja była wywoływana po kliknięciu na nią, powinieneś użyć wiązania click.

+0

Dzięki za odpowiedź, ale did'nt zdobyć jak używać kliknij wiązania wywołać funkcję Update, może u proszę podać krótki przykład –

+0

No to zależy od tego, co chcesz, aby móc zrobić z tymi, parametry. W twoim przykładzie nie ma wiele do zrobienia. Czy potrzebujesz tych wartości w akcji? –

0

Musisz wywołać funkcję po kliknięciu "usuń", a następnie zastosować wiązanie ponownie w tej funkcji. Twój problem zostanie rozwiązany. Ponieważ masz wartość wiązania, gdy pierwszy raz ładuje, a nie kliknij usuń.

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

<script type=javascript> 
    function delete(){ ko.applyBindings(ko.bindingHandlers.custom);} 
</script> 
Powiązane problemy