Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 16 additions & 11 deletions backbone.epoxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -1234,20 +1234,13 @@
throw('Error parsing bindings: "'+declarations +'"\n>> '+error);
}

// Format the 'events' option:
// include events from the binding declaration along with a default 'change' trigger,
// then format all event names with a '.epoxy' namespace.
var events = _.map(_.union(bindings.events || [], ['change']), function(name) {
return name+'.epoxy';
}).join(' ');

// Apply bindings from native context:
_.each(bindings, function(accessor, handlerName) {

// Validate that each defined handler method exists before binding:
if (handlers.hasOwnProperty(handlerName)) {
// Create and add binding to the view's list of handlers:
view.b().push(new EpoxyBinding(view, $element, handlers[handlerName], accessor, events, context, bindings));
view.b().push(new EpoxyBinding(view, $element, handlers[handlerName], accessor, bindings.events, context, bindings));
} else if (!allowedParams.hasOwnProperty(handlerName)) {
throw('binding handler "'+ handlerName +'" is not defined.');
}
Expand Down Expand Up @@ -1290,12 +1283,24 @@
var self = this;
var tag = ($element[0].tagName).toLowerCase();
var changable = (tag == 'input' || tag == 'select' || tag == 'textarea' || $element.prop('contenteditable') == 'true');
var eventsArray = events || [];
var triggers = [];
var reset = function(target) {
self.set(self.$el, readAccessor(accessor), target);
};

self.view = view;

// By default all changeable form elements get the "change" event
if (changable) {
eventsArray.push('change');
}

// Add ".epoxy" namespace to all events and join them as jQuery format
events = _.map(eventsArray || [], function(name) {
return name+'.epoxy';
}).join(' ');


self.view = view;
self.$el = $element;
self.evt = events;
_.extend(self, handler);
Expand All @@ -1315,7 +1320,7 @@
// => Form element.
// => Binding handler has a getter method.
// => Value accessor is a function.
if (changable && handler.get && isFunction(accessor)) {
if (eventsArray.length > 0 && handler.get && isFunction(accessor)) {
self.$el.on(events, function(evt) {
accessor(self.get(self.$el, readAccessor(accessor), evt));
});
Expand Down