Вопрос

В маршрутизаторе. Сэверная цепочка консоли Firebug Null. Почему???

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

Это было полезно?

Решение

Backbone не поддерживает AMD и не регистрируется как модуль. Когда требуется, он обычно регистрируется как глобальный объект из -за магистратуры, а также, поскольку 1.3 подчеркивается не поддерживает AMD, и если вам потребуется магистральная и подчеркивая undefined причина этого.

JQuery поддерживает AMD, но также регистрируется как глобальный экземпляр. По сути, это означает, что вам не нужно требуется jQuery, подчеркивание и засеяние несколько раз - этого достаточно, если вы сделаете это один раз в своем главном сценарии expertivejs

Другие советы

Альтернатива - взломать библиотеку Backbone.js.

Примечание. Это позволит вам ссылаться на Backbone.js и Underscore.js Library в вашем определении require.js, но это не остановит их от добавления в глобальное пространство имен/окно. Это требует немного больше взлома.

  1. Находить:

    (function(){var l=this,y=
    
  2. Замените его:

    define('backbone',['underscore','jquery'],function(_,$){
    var l = this;
    (function(){var y=
    
  3. Добавьте это в нижнюю часть страницы:

    return l.Backbone;
    });
    

Тогда сделайте то же самое для underscore.js

  1. Префикс начало с:

    define('underscore',function(){
    
  2. Добавьте в нижнюю часть страницы:

    return this._;
    });
    
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top