Domanda

Nel router.js. La console Firebug avviene la spina dorsale lì. Perché???

app.js

define([
  'order!jQuery',
  'order!Underscore',
  'order!Backbone',
  'order!router'  // Request router.js
],
function($, _, Backbone, Router){

    App = {
        initialize: function() {

            console.log("app.js initalize");
            Router.initialize();
        }
    };

    return App;
});

router.js

define([
   'order!Underscore',
   'order!Backbone'
],
function(_, Backbone){

    var AppRouter = Backbone.Router.extend({      
        // Console shows Backbone is null here, why? 
        // I'm sure the config is correct.
        routes: {

            '*actions': "defaultAction"
        },

        defaultAction: function(actions){
            // We have no matching route, lets just log what the URL was
            console.log('No route:', actions);
        }
    });

    var initialize = function(){
        console.log("Router initialize");
        var app_router = new AppRouter;

        Backbone.history.start();
    };
    return {
        initialize: initialize
    };

});

enter image description here

È stato utile?

Soluzione

La spina dorsale non supporta l'AMD e non si registra come modulo. Quando richiesto Registri IT normalmente come un oggetto spina dorsale globale, anche poiché 1.3 sottoscritto non supporta nemmeno AMD e se richiederai la spina dorsale e il sottolinea undefined causa di questo.

JQuery supporta AMD ma si registra anche come istanza globale. Fondamentalmente significa che non è necessario richiedere jQuery, sottolineatura e spina dorsale più volte - è sufficiente se lo fai una volta nella sceneggiatura principale di Requisitijs

Altri suggerimenti

L'alternativa è quella di hackerare la libreria BackBone.js.

Nota: ciò ti consentirà di fare riferimento alla backbone.js e alla libreria di undercore.js all'interno di Requisite.js, ma non impedirà loro di essere aggiunti allo spazio dei nomi/finestra globale. Ciò richiede un po 'più di hacking.

  1. Trova:

    (function(){var l=this,y=
    
  2. Sostituirlo con:

    define('backbone',['underscore','jquery'],function(_,$){
    var l = this;
    (function(){var y=
    
  3. Aggiungi questo in fondo alla pagina:

    return l.Backbone;
    });
    

Quindi fai lo stesso per sottolineate.js

  1. Prefissa l'inizio con:

    define('underscore',function(){
    
  2. Aggiungi alla parte inferiore della pagina:

    return this._;
    });
    
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top