Loading Backbone.Relational using Use! plugin
Asked Answered
H

2

0

Backbone Relational is not an AMD compliant library, so I've gone ahead and found the use plugin to ensure underscore and backbone are both loaded as dependencies. Here is my config file

require.config({
  baseUrl: '../global/js',
  paths: {
    use: 'libs/utilities/use',
    jquery: 'libs/jquery/jquery-min',
    underscore: 'libs/underscore/underscore-min',
    backbone: 'libs/backbone/backbone-optamd3-min',
    text: 'libs/require/text',
    relational: 'libs/backbone/backbone-relational'
  },
  use:  {
    "relational": {
        deps: ["backbone","underscore"]
    }
  }
 });

I've also gone ahead and augmented the Backbone Relational library

(function(Backbone, _) {
  "use strict";

  Backbone.Relational = {
        showWarnings: true
  };

})(this.Backbone, this._);

Finally, I am calling relational within a model

 define([

    'jquery',
    'underscore',
    'backbone',
    'mediator',
    'relational'

    ], function($, _, Backbone, Mediator){

I am getting an error of cannot set property Relational of undefined. Meaning Backbone is not available. What am I missing?

Some links that I have been using
https://github.com/tbranyen/use.js
https://github.com/tbranyen/layoutmanager-example/blob/master/app/index.js
https://raw.github.com/PaulUithol/Backbone-relational/master/backbone-relational.js

Highlight answered 18/5, 2012 at 20:43 Comment(0)
S
0

Backbone and underscore are not AMD compatible.

Upgrade warning: versions 1.3.0 and higher remove AMD (RequireJS) support.

Shannonshanny answered 18/5, 2012 at 20:46 Comment(1)
I am using the AMD branches...still on 1.2.2 of underscore. I should mention the application was working before I added the !use plugin and Backbone RelationalHighlight
M
0

To use (sic) the use plugin you do not need the AMD versions of underscore/backbone. You do need to wrap them though accordingly, i.e. in your require config have:

    use: {
        backbone: {
            deps: ["use!underscore", "jquery"],
            attach: "Backbone"
        },

        underscore: {
            attach: "_"
        },

        relational: {
            deps: ["use!underscore", "use!backbone"]
        }
        ....
    }
Macpherson answered 19/5, 2012 at 7:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.