vendor/assets/javascripts/locomotive/backbone.modelbinding.js in locomotive_cms-2.0.0.rc7 vs vendor/assets/javascripts/locomotive/backbone.modelbinding.js in locomotive_cms-2.0.0.rc8
- old
+ new
@@ -62,14 +62,17 @@
var eventName = "change:" + attribute_name;
model.bind(eventName, callback);
this.modelBindings.push({model: model, eventName: eventName, callback: callback});
}
- this.registerElementBinding = function(element, callback){
+ this.registerElementBinding = function(element, callback, callbackSilently){
// bind the form changes to the model
element.bind("change", callback);
this.elementBindings.push({element: element, eventName: "change", callback: callback});
+
+ if (callbackSilently)
+ element.bind("changeSilently", callbackSilently)
}
}
// ----------------------------
// Model Binding Configuration
@@ -186,21 +189,27 @@
var modelChange = function(changed_model, val){
val = val == null ? '' : val;
element.val(val);
};
- var setModelValue = function(attr_name, value){
+ var setModelValue = function(attr_name, value, silent){
+ if (typeof(silent) === 'undefined' || silent == null) silent = false
var data = {};
data[attr_name] = value;
- model.set(data);
+ model.set(data, { 'silent': silent });
};
var elementChange = function(ev){
setModelValue(attribute_name, view.$(ev.target).val());
};
+ // FIXME (Did): simple solution to update the model without triggering related callbacks (solving a bug with tinymce)
+ var elementChangeSilently = function(ev) {
+ setModelValue(attribute_name, view.$(ev.target).val(), true);
+ }
+
modelBinder.registerModelBinding(model, attribute_name, modelChange);
- modelBinder.registerElementBinding(element, elementChange);
+ modelBinder.registerElementBinding(element, elementChange, elementChangeSilently);
// set the default value on the form, from the model
var attr_value = model.get(attribute_name);
if (typeof attr_value !== "undefined" && attr_value !== null) {
element.val(attr_value);