Привет Я пытаюсь установить ko так, чтобы на любом обработчике клика было написано немного пользовательского кода. Самый простой способ добавить некоторый пре-и почтовый код в обработчик привязки «щелчок»?knockoutjs overriding bindinghandlers
ответ
Вы можете создать пользовательские привязки, который оборачивает click
связывания или сохранить от ссылок на оригинальные init
и update
функций click
связывания и заменить реальный.
Вы можете либо выполнить какой-либо код в функции update
, которая будет активирована при обновлении значения модели (либо обработчиком события, подключенным в функции init, либо программно), либо выполнить код как часть фактического обработчика , Это звучит так, как будто вы хотите последнего.
Вашего связывания может выглядеть следующим образом:
(function() {
var originalInit = ko.bindingHandlers.click.init,
originalUpdate = ko.bindingHandlers.click.update;
ko.bindingHandlers.click = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel, context) {
var wrappedValueAccessor = function() {
return function(data, event) {
//run some pre code
ko.bindingHandlers.click.preOnClick.call(viewModel, data, event);
valueAccessor().call(viewModel, data, event);
//run some post code
ko.bindingHandlers.click.postOnClick.call(viewModel, data, event);
};
};
originalInit(element, wrappedValueAccessor, allBindingsAccessor, viewModel, context);
},
update: originalUpdate,
preOnClick: function(data, event) {
alert("pre code for " + data.id);
},
postOnClick: function(data, event) {
alert("post code for " + data.id);
}
};
})();
Я отщепляюсь предварительно/почтовый индекс, например, что во время выполнения вы можете переопределить ko.bindingHandlers.click.preOnClick
или ko.bindingHandlers.click.postOnClick
Вот пример: http://jsfiddle.net/rniemeyer/PksAn/
Если вам нужно запустить собственный код в функции обновления, вы можете разделить его и запустить свой предварительный и почтовый код и выполнить originalUpdate
между ними.
- 1. Knockout.JS Bindinghandlers moment.js
- 2. изменение Revert с Knockoutjs и bindingHandlers с помощью компьютерной
- 3. Knockout.js Bindinghandlers Bootstrap.DatePicker
- 4. overriding equals() vs overriding compareTo()
- 5. KnockoutJS - как мне отменить клики?
- 6. Overriding @ConfigurationProperties
- 7. Overriding SetThreadExecutionState
- 8. Overriding appendChild()
- 9. Overriding equals()
- 10. Overriding ArrayList
- 11. Overriding DateTime.Now
- 12. Overriding onSaveInstanceState
- 13. Overriding ToString()
- 14. OnClickListener Overriding
- 15. overriding upload_max_filesize
- 16. Overriding removeFromSuperview
- 17. removeEldestEntry overriding
- 18. Overriding @Display
- 19. Overriding ArrayAdapter.Add
- 20. Overriding (cast)
- 21. overriding findResource
- 22. Overriding element.style
- 23. Overriding Application_PreRequestHandlerExecute
- 24. Magento overriding
- 25. ggplot2 graph and overriding
- 26. overriding Метод asp.net mvc
- 27. To_Json overriding in Ruby
- 28. overriding startResolutionForResult диалоговое окно
- 29. Django, overriding ManyToManyField
- 30. Overriding Методы добавления
спасибо RP. это имеет большой смысл. – Chin
RP, вы можете проверить это? Мне нужен поставщик обязательного связывания, http://stackoverflow.com/questions/14535102/binding-jagged-array-with-knockout – user960567
Это должен быть принятый ответ, правильный код и правильное решение. –