event_registrator.js 1.3 KB

1234567891011121314151617181920212223242526272829
  1. /**
  2. * DevExtreme (integration/knockout/event_registrator.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. var $ = require("../../core/renderer");
  11. var eventsEngine = require("../../events/core/events_engine");
  12. var ko = require("knockout");
  13. var isPlainObject = require("../../core/utils/type").isPlainObject;
  14. var eventRegistratorCallbacks = require("../../events/core/event_registrator_callbacks");
  15. var eventUtils = require("../../events/utils");
  16. eventRegistratorCallbacks.add(function(name) {
  17. var koBindingEventName = eventUtils.addNamespace(name, name + "Binding");
  18. ko.bindingHandlers[name] = {
  19. update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
  20. var $element = $(element);
  21. var unwrappedValue = ko.utils.unwrapObservable(valueAccessor());
  22. var eventSource = unwrappedValue.execute ? unwrappedValue.execute : unwrappedValue;
  23. eventsEngine.off($element, koBindingEventName);
  24. eventsEngine.on($element, koBindingEventName, isPlainObject(unwrappedValue) ? unwrappedValue : {}, function(e) {
  25. eventSource.call(viewModel, viewModel, e)
  26. })
  27. }
  28. }
  29. });