appetizer-ui 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. data/appetizer-ui.gemspec +15 -13
  2. data/lib/appetizer/ui/assets.rb +21 -8
  3. data/lib/appetizer/ui/jasmine/js/jquery-jasmine.js +288 -0
  4. data/lib/appetizer/ui/jasmine/js/spec-runner.coffee +0 -1
  5. data/lib/appetizer/ui/jasmine/views/specs.erb +12 -4
  6. data/lib/appetizer/ui/rake.rb +29 -10
  7. data/lib/appetizer/ui/spec.rb +1 -2
  8. metadata +122 -61
  9. data/lib/appetizer/ui/app/js/appetizer.coffee +0 -15
  10. data/lib/appetizer/ui/app/js/appetizer/core.coffee +0 -20
  11. data/lib/appetizer/ui/app/js/appetizer/model.coffee +0 -1
  12. data/lib/appetizer/ui/app/js/appetizer/router.coffee +0 -70
  13. data/lib/appetizer/ui/app/js/appetizer/view.coffee +0 -139
  14. data/lib/appetizer/ui/app/js/appetizer/xdr.coffee +0 -57
  15. data/lib/appetizer/ui/app/views/client/appetizer/missing.jst.eco +0 -3
  16. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/appetizerExtensions.spec.js +0 -54
  17. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/checkboxConventionBindings.spec.js +0 -110
  18. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/configurableBindingAttributes.spec.js +0 -117
  19. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/configureAllBindingAttributes.spec.js +0 -139
  20. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/customConvention.spec.js +0 -53
  21. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindConvention.spec.js +0 -151
  22. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindMultiple.spec.js +0 -36
  23. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindSubstitutions.spec.js +0 -137
  24. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/globalConfiguraAllBindingAttributes.spec.js +0 -124
  25. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/globalConfigurableBindingAttributes.spec.js +0 -36
  26. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/helpers/SpecHelper.js +0 -4
  27. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/helpers/sample.backbone.app.js +0 -159
  28. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/html5inputConventionBinding.spec.js +0 -142
  29. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/modelUnbinding.spec.js +0 -73
  30. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/noConflict.spec.js +0 -36
  31. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/radioButtonConventionBinding.spec.js +0 -41
  32. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/selectboxConventionBindings.spec.js +0 -60
  33. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/textareaConventionBinding.spec.js +0 -29
  34. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/textboxConventionBinding.spec.js +0 -66
  35. data/lib/appetizer/ui/vendor/js/backbone.js +0 -1290
  36. data/lib/appetizer/ui/vendor/js/backbone.modelbinding.js +0 -624
  37. data/lib/appetizer/ui/vendor/js/jquery.js +0 -9266
  38. data/lib/appetizer/ui/vendor/js/json2.js +0 -480
  39. data/lib/appetizer/ui/vendor/js/underscore.js +0 -999
  40. data/lib/appetizer/ui/vendor/js/underscore.string.js +0 -480
@@ -1,624 +0,0 @@
1
- // Backbone.ModelBinding v0.4.3
2
- // [jbarnette] Added getAttributeValue, allowing values to come from functions.
3
- // [cmorse] Added mediate support
4
- // [toots] Added foo.bar.baz syntax for bound attributes
5
- //
6
- // Copyright (C)2011 Derick Bailey, Muted Solutions, LLC
7
- // Distributed Under MIT Liscene
8
- //
9
- // Documentation and Full Licence Availabe at:
10
- // http://github.com/derickbailey/backbone.modelbinding
11
-
12
- // ----------------------------
13
- // Backbone.ModelBinding
14
- // ----------------------------
15
-
16
- ;(function(root){
17
-
18
- var modelbinding = (function(Backbone, _, $) {
19
- var modelBinding = {
20
- version: "0.4.3",
21
-
22
- bind: function(view, options){
23
- view.modelBinder = new ModelBinder(view, options);
24
- view.modelBinder.bind();
25
- },
26
-
27
- unbind: function(view){
28
- if (view.modelBinder){
29
- view.modelBinder.unbind()
30
- }
31
- }
32
- };
33
-
34
- // pop attribute name from model. It takes, in order
35
- // of priority:
36
- // model[name] if defined and not a function
37
- // model[name]() if defined and a function
38
- // model.get(name) otherwise
39
- var popAttribute = function (model, name) {
40
- var value = model[name];
41
- if (value) {
42
- if (_.isFunction(value))
43
- value = value.apply(model)
44
- } else {
45
- if (model.get) {
46
- value = model.get(name);
47
- } else {
48
- return undefined;
49
- }
50
- }
51
- return value;
52
- }
53
-
54
- var getAttributeValue = function(model, name) {
55
- var value = model;
56
-
57
- name = "" + name;
58
-
59
- names = name.split(".");
60
-
61
- _.each(names, function (name) {
62
- value = popAttribute(value, name);
63
- });
64
-
65
- return value;
66
- };
67
-
68
- var ModelBinder = function(view, options){
69
- this.config = new modelBinding.Configuration(options);
70
- this.modelBindings = [];
71
- this.elementBindings = [];
72
-
73
- this.bind = function(){
74
- var conventions = modelBinding.Conventions;
75
- for (var conventionName in conventions){
76
- if (conventions.hasOwnProperty(conventionName)){
77
- var conventionElement = conventions[conventionName];
78
- var handler = conventionElement.handler;
79
- var conventionSelector = conventionElement.selector;
80
- handler.bind.call(this, conventionSelector, view, view.model, this.config);
81
- }
82
- }
83
- };
84
-
85
- this.unbind = function(){
86
- // unbind the html element bindings
87
- _.each(this.elementBindings, function(binding){
88
- binding.element.unbind(binding.eventName, binding.callback);
89
- });
90
-
91
- // unbind the model bindings
92
- _.each(this.modelBindings, function(binding){
93
- binding.model.unbind(binding.eventName, binding.callback);
94
- });
95
- };
96
-
97
- this.registerModelBinding = function(model, attrName, callback){
98
- // bind the model changes to the form elements
99
- var eventName = "change:" + attrName;
100
- model.bind(eventName, callback);
101
- this.modelBindings.push({model: model, eventName: eventName, callback: callback});
102
- };
103
-
104
- this.registerDataBinding = function(model, eventName, callback){
105
- // bind the model changes to the elements
106
-
107
- model.bind(eventName, callback);
108
- this.modelBindings.push({model: model, eventName: eventName, callback: callback});
109
- };
110
-
111
- this.registerElementBinding = function(element, callback){
112
- // bind the form changes to the model
113
- element.bind("change", callback);
114
- this.elementBindings.push({element: element, eventName: "change", callback: callback});
115
- };
116
- };
117
-
118
- // ----------------------------
119
- // Model Binding Configuration
120
- // ----------------------------
121
- modelBinding.Configuration = function(options){
122
- this.bindingAttrConfig = {};
123
-
124
- _.extend(this.bindingAttrConfig,
125
- modelBinding.Configuration.bindindAttrConfig,
126
- options
127
- );
128
-
129
- if (this.bindingAttrConfig.all){
130
- var attr = this.bindingAttrConfig.all;
131
- delete this.bindingAttrConfig.all;
132
- for (var inputType in this.bindingAttrConfig){
133
- if (this.bindingAttrConfig.hasOwnProperty(inputType)){
134
- this.bindingAttrConfig[inputType] = attr;
135
- }
136
- }
137
- }
138
-
139
- this.getBindingAttr = function(type){
140
- return this.bindingAttrConfig[type];
141
- };
142
-
143
- this.getBindingValue = function(element, type){
144
- var bindingAttr = this.getBindingAttr(type);
145
- return element.attr(bindingAttr);
146
- };
147
-
148
- };
149
-
150
- modelBinding.Configuration.bindindAttrConfig = {
151
- text: "id",
152
- textarea: "id",
153
- password: "id",
154
- radio: "name",
155
- checkbox: "id",
156
- select: "id",
157
- number: "id",
158
- range: "id",
159
- tel: "id",
160
- search: "id",
161
- url: "id",
162
- email: "id"
163
- };
164
-
165
- modelBinding.Configuration.store = function(){
166
- modelBinding.Configuration.originalConfig = _.clone(modelBinding.Configuration.bindindAttrConfig);
167
- };
168
-
169
- modelBinding.Configuration.restore = function(){
170
- modelBinding.Configuration.bindindAttrConfig = modelBinding.Configuration.originalConfig;
171
- };
172
-
173
- modelBinding.Configuration.configureBindingAttributes = function(options){
174
- if (options.all){
175
- this.configureAllBindingAttributes(options.all);
176
- delete options.all;
177
- }
178
- _.extend(modelBinding.Configuration.bindindAttrConfig, options);
179
- };
180
-
181
- modelBinding.Configuration.configureAllBindingAttributes = function(attribute){
182
- var config = modelBinding.Configuration.bindindAttrConfig;
183
- config.text = attribute;
184
- config.textarea = attribute;
185
- config.password = attribute;
186
- config.radio = attribute;
187
- config.checkbox = attribute;
188
- config.select = attribute;
189
- config.number = attribute;
190
- config.range = attribute;
191
- config.tel = attribute;
192
- config.search = attribute;
193
- config.url = attribute;
194
- config.email = attribute;
195
- };
196
-
197
- // ----------------------------
198
- // Text, Textarea, and Password Bi-Directional Binding Methods
199
- // ----------------------------
200
- var StandardBinding = (function(Backbone){
201
- var methods = {};
202
-
203
- var _getElementType = function(element) {
204
- var type = element[0].tagName.toLowerCase();
205
- if (type == "input"){
206
- type = element.attr("type");
207
- if (type == undefined || type == ''){
208
- type = 'text';
209
- }
210
- }
211
- return type;
212
- };
213
-
214
- methods.bind = function(selector, view, model, config){
215
- var modelBinder = this;
216
-
217
- view.$(selector).each(function(index){
218
- var element = view.$(this);
219
- var elementType = _getElementType(element);
220
- var attribute_name = config.getBindingValue(element, elementType);
221
- if (!attribute_name) return;
222
- var mediator = modelBinding.getMediator(element);
223
-
224
- var modelChange = function(changed_model, val) {
225
- element.val(mediator.render(val));
226
- };
227
-
228
- var popData = function (options, name) {
229
- var target;
230
- if (target = options.model[name]) {
231
- options.model = _.isFunction(target) ? target() : target
232
- } else {
233
- options.data[name] = options.model.get(name) || {};
234
- options.data = options.data[name];
235
- }
236
- }
237
-
238
- var setModelValue = function(attr_name, value){
239
- var origData = {};
240
- var options = { data: origData, model: model };
241
-
242
- attr_names = attr_name.split(".");
243
- attr_name = attr_names.pop();
244
-
245
- _.each(attr_names, function (name) {
246
- popData(options, name);
247
- });
248
-
249
- options.data[attr_name] = mediator.parse(value);
250
- options.model.set(origData);
251
- };
252
-
253
- var elementChange = function(ev){
254
- setModelValue(attribute_name, view.$(ev.target).val());
255
- };
256
-
257
- modelBinder.registerModelBinding(model, attribute_name, modelChange);
258
- modelBinder.registerElementBinding(element, elementChange);
259
-
260
- // set the default value on the form, from the model
261
- var attr_value = getAttributeValue(model, attribute_name);
262
- if (typeof attr_value !== "undefined" && attr_value !== null) {
263
- element.val(mediator.render(attr_value));
264
- } else {
265
- var elVal = element.val();
266
- if (elVal){
267
- setModelValue(attribute_name, elVal);
268
- }
269
- }
270
- });
271
- };
272
-
273
- return methods;
274
- })(Backbone);
275
-
276
- // ----------------------------
277
- // Select Box Bi-Directional Binding Methods
278
- // ----------------------------
279
- var SelectBoxBinding = (function(Backbone){
280
- var methods = {};
281
-
282
- methods.bind = function(selector, view, model, config){
283
- var modelBinder = this;
284
-
285
- view.$(selector).each(function(index){
286
- var element = view.$(this);
287
- var attribute_name = config.getBindingValue(element, 'select');
288
- if (!attribute_name) return;
289
-
290
- var modelChange = function(changed_model, val){ element.val(val); };
291
-
292
- var setModelValue = function(attr, val, text){
293
- var data = {};
294
- data[attr] = val;
295
- data[attr + "_text"] = text;
296
- model.set(data);
297
- };
298
-
299
- var elementChange = function(ev){
300
- var targetEl = view.$(ev.target);
301
- var value = targetEl.val();
302
- var text = targetEl.find(":selected").text();
303
- setModelValue(attribute_name, value, text);
304
- };
305
-
306
- modelBinder.registerModelBinding(model, attribute_name, modelChange);
307
- modelBinder.registerElementBinding(element, elementChange);
308
-
309
- // set the default value on the form, from the model
310
- var attr_value = getAttributeValue(model, attribute_name);
311
- if (typeof attr_value !== "undefined" && attr_value !== null) {
312
- element.val(attr_value);
313
- }
314
-
315
- // set the model to the form's value if there is no model value
316
- if (element.val() != attr_value) {
317
- var value = element.val();
318
- var text = element.find(":selected").text();
319
- setModelValue(attribute_name, value, text);
320
- }
321
- });
322
- };
323
-
324
- return methods;
325
- })(Backbone);
326
-
327
- // ----------------------------
328
- // Radio Button Group Bi-Directional Binding Methods
329
- // ----------------------------
330
- var RadioGroupBinding = (function(Backbone){
331
- var methods = {};
332
-
333
- methods.bind = function(selector, view, model, config){
334
- var modelBinder = this;
335
-
336
- var foundElements = [];
337
- view.$(selector).each(function(index){
338
- var element = view.$(this);
339
-
340
- var group_name = config.getBindingValue(element, 'radio');
341
- if (!foundElements[group_name]) {
342
- foundElements[group_name] = true;
343
- var bindingAttr = config.getBindingAttr('radio');
344
-
345
- var modelChange = function(model, val){
346
- var value_selector = "input[type=radio][" + bindingAttr + "=" + group_name + "][value='" + val + "']";
347
- view.$(value_selector).attr("checked", "checked");
348
- };
349
- modelBinder.registerModelBinding(model, group_name, modelChange);
350
-
351
- var setModelValue = function(attr, val){
352
- var data = {};
353
- data[attr] = val;
354
- model.set(data);
355
- };
356
-
357
- // bind the form changes to the model
358
- var elementChange = function(ev){
359
- var element = view.$(ev.currentTarget);
360
- if (element.is(":checked")){
361
- setModelValue(group_name, element.val());
362
- }
363
- };
364
-
365
- var group_selector = "input[type=radio][" + bindingAttr + "=" + group_name + "]";
366
- view.$(group_selector).each(function(){
367
- var groupEl = $(this);
368
- modelBinder.registerElementBinding(groupEl, elementChange);
369
- });
370
-
371
- var attr_value = getAttributeValue(model, group_name);
372
- if (typeof attr_value !== "undefined" && attr_value !== null) {
373
- // set the default value on the form, from the model
374
- var value_selector = "input[type=radio][" + bindingAttr + "=" + group_name + "][value='" + attr_value + "']";
375
- view.$(value_selector).attr("checked", "checked");
376
- } else {
377
- // set the model to the currently selected radio button
378
- var value_selector = "input[type=radio][" + bindingAttr + "=" + group_name + "]:checked";
379
- var value = view.$(value_selector).val();
380
- setModelValue(group_name, value);
381
- }
382
- }
383
- });
384
- };
385
-
386
- return methods;
387
- })(Backbone);
388
-
389
- // ----------------------------
390
- // Checkbox Bi-Directional Binding Methods
391
- // ----------------------------
392
- var CheckboxBinding = (function(Backbone){
393
- var methods = {};
394
-
395
- methods.bind = function(selector, view, model, config){
396
- var modelBinder = this;
397
-
398
- view.$(selector).each(function(index){
399
- var element = view.$(this);
400
- var bindingAttr = config.getBindingAttr('checkbox');
401
- var attribute_name = config.getBindingValue(element, 'checkbox');
402
-
403
- if (!attribute_name) return;
404
-
405
- var modelChange = function(model, val){
406
- if (val){
407
- element.attr("checked", "checked");
408
- }
409
- else{
410
- element.removeAttr("checked");
411
- }
412
- };
413
-
414
- var setModelValue = function(attr_name, value){
415
- var data = {};
416
- data[attr_name] = value;
417
- model.set(data);
418
- };
419
-
420
- var elementChange = function(ev){
421
- var changedElement = view.$(ev.target);
422
- var checked = changedElement.is(":checked")? true : false;
423
- setModelValue(attribute_name, checked);
424
- };
425
-
426
- modelBinder.registerModelBinding(model, attribute_name, modelChange);
427
- modelBinder.registerElementBinding(element, elementChange);
428
-
429
- var attr_exists = model.attributes.hasOwnProperty(attribute_name);
430
- if (attr_exists) {
431
- // set the default value on the form, from the model
432
- var attr_value = getAttributeValue(model, attribute_name);
433
- if (typeof attr_value !== "undefined" && attr_value !== null && attr_value != false) {
434
- element.attr("checked", "checked");
435
- }
436
- else{
437
- element.removeAttr("checked");
438
- }
439
- } else {
440
- // bind the form's value to the model
441
- var checked = element.is(":checked")? true : false;
442
- setModelValue(attribute_name, checked);
443
- }
444
- });
445
- };
446
-
447
- return methods;
448
- })(Backbone);
449
-
450
- // ----------------------------
451
- // Data-Bind Binding Methods
452
- // ----------------------------
453
- var DataBindBinding = (function(Backbone, _, $){
454
- var dataBindSubstConfig = {
455
- "default": ""
456
- };
457
-
458
- modelBinding.Configuration.dataBindSubst = function(config){
459
- this.storeDataBindSubstConfig();
460
- _.extend(dataBindSubstConfig, config);
461
- };
462
-
463
- modelBinding.Configuration.storeDataBindSubstConfig = function(){
464
- modelBinding.Configuration._dataBindSubstConfig = _.clone(dataBindSubstConfig);
465
- };
466
-
467
- modelBinding.Configuration.restoreDataBindSubstConfig = function(){
468
- if (modelBinding.Configuration._dataBindSubstConfig){
469
- dataBindSubstConfig = modelBinding.Configuration._dataBindSubstConfig;
470
- delete modelBinding.Configuration._dataBindSubstConfig;
471
- }
472
- };
473
-
474
- modelBinding.Configuration.getDataBindSubst = function(elementType, value){
475
- var returnValue = value;
476
- if (value === undefined){
477
- if (dataBindSubstConfig.hasOwnProperty(elementType)){
478
- returnValue = dataBindSubstConfig[elementType];
479
- } else {
480
- returnValue = dataBindSubstConfig["default"];
481
- }
482
- }
483
- return returnValue;
484
- };
485
-
486
- var setOnElement = function(element, attr, val){
487
- var valBefore = val;
488
- val = modelBinding.Configuration.getDataBindSubst(attr, val);
489
- val = modelBinding.getMediator(element).render(val);
490
- switch(attr){
491
- case "html":
492
- element.html(val);
493
- break;
494
- case "text":
495
- element.text(val);
496
- break;
497
- case "enabled":
498
- element.attr("disabled", !val);
499
- break;
500
- case "displayed":
501
- element[val? "show" : "hide"]();
502
- break;
503
- case "hidden":
504
- element[val? "hide" : "show"]();
505
- break;
506
- default:
507
- element.attr(attr, val);
508
- }
509
- };
510
-
511
- var splitBindingAttr = function(element)
512
- {
513
- var dataBindConfigList = [];
514
- var dataBindAttributeName = modelBinding.Conventions.databind.selector.replace(/^(.*\[)([^\]]*)(].*)/g, '$2');
515
- var databindList = element.attr(dataBindAttributeName).split(";");
516
- _.each(databindList, function(attrbind){
517
- var databind = $.trim(attrbind).split(" ");
518
-
519
- // make the default special case "text" if none specified
520
- if( databind.length == 1 ) databind.unshift("text");
521
-
522
- dataBindConfigList.push({
523
- elementAttr: databind[0],
524
- modelAttr: databind[1]
525
- });
526
- });
527
- return dataBindConfigList;
528
- };
529
-
530
- var getEventConfiguration = function(element, databind){
531
- var config = {};
532
- var eventName = databind.modelAttr;
533
- var index = eventName.indexOf("event:");
534
-
535
- if (index == 0) {
536
- // "event:foo" binding
537
- config.name = eventName.substr(6);
538
- config.callback = function(val){
539
- setOnElement(element, databind.elementAttr, val);
540
- };
541
- } else {
542
- // standard model attribute binding
543
- config.name = "change:" + eventName;
544
- config.callback = function(model, val){
545
- setOnElement(element, databind.elementAttr, val);
546
- };
547
- }
548
-
549
- return config;
550
- }
551
- var methods = {};
552
-
553
- methods.bind = function(selector, view, model, config){
554
- var modelBinder = this;
555
-
556
- view.$(selector).each(function(index){
557
- var element = view.$(this);
558
- var databindList = splitBindingAttr(element);
559
-
560
- _.each(databindList, function(databind){
561
- var eventConfig = getEventConfiguration(element, databind);
562
- modelBinder.registerDataBinding(model, eventConfig.name, eventConfig.callback);
563
-
564
- // set default on data-bind element
565
- setOnElement(element, databind.elementAttr, getAttributeValue(model, databind.modelAttr));
566
- });
567
-
568
- });
569
- };
570
-
571
- return methods;
572
- })(Backbone, _, $);
573
-
574
-
575
- // ----------------------------
576
- // Binding Conventions
577
- // ----------------------------
578
- modelBinding.Conventions = {
579
- text: {selector: "input:text", handler: StandardBinding},
580
- textarea: {selector: "textarea", handler: StandardBinding},
581
- password: {selector: "input:password", handler: StandardBinding},
582
- radio: {selector: "input:radio", handler: RadioGroupBinding},
583
- checkbox: {selector: "input:checkbox", handler: CheckboxBinding},
584
- select: {selector: "select", handler: SelectBoxBinding},
585
- databind: { selector: "*[data-bind]", handler: DataBindBinding},
586
- // HTML5 input
587
- number: {selector: "input[type=number]", handler: StandardBinding},
588
- range: {selector: "input[type=range]", handler: StandardBinding},
589
- tel: {selector: "input[type=tel]", handler: StandardBinding},
590
- search: {selector: "input[type=search]", handler: StandardBinding},
591
- url: {selector: "input[type=url]", handler: StandardBinding},
592
- email: {selector: "input[type=email]", handler: StandardBinding}
593
- };
594
-
595
- modelBinding.Mediators = {}
596
-
597
- modelBinding.getMediator = function(element) {
598
- var mediator = modelBinding.Mediators[$(element).attr("data-mediator")] || {};
599
-
600
- mediator.parse = mediator.parse || function(t) { return t; }
601
- mediator.render = mediator.render || function(t) { return t; }
602
- return mediator;
603
- }
604
-
605
- return modelBinding;
606
- });
607
-
608
- // Backbone.Modelbinding AMD wrapper with namespace fallback
609
- if (typeof define === 'function' && define.amd) {
610
- // AMD support
611
- define([
612
- 'backbone', // use Backbone 0.5.3-optamd3 branch (https://github.com/jrburke/backbone/tree/optamd3)
613
- 'underscore', // AMD supported
614
- 'jquery' // AMD supported
615
- ], function (Backbone, _, jQuery) {
616
- return modelbinding(Backbone, _, jQuery);
617
- });
618
- } else {
619
- // No AMD, use Backbone namespace
620
- root.Backbone = Backbone || {};
621
- root.Backbone.ModelBinding = modelbinding(Backbone, _, jQuery);
622
- }
623
-
624
- })(this);