2015-05-14 6 views
1

Я новичок в Marionette, и я просто не могу получить маршруты для работы.Marionettejs Маршруты

Я использую версию 2.4.1 Marionette и стараюсь сделать это самым простым способом, поэтому он будет работать.

Этот код работает для старой версии Marionette, v1.0.2, которая была включена в один из генераторов yoman. Я знаю, что существует огромный разрыв между этими двумя versoins, но для каждой должности, блога, официальной документации и даже книг, написанных для этого кода рамки, остается неизменным.

В консоли нет ошибок, но метод «home» не запускается.

Я что-то упустил?


application.js (тело Application):

define(['backbone', 'marionette'], 

function (Backbone, Marionette) { 
    'use strict'; 

    var App = new Marionette.Application(); 


    App.Router = Marionette.AppRouter.extend({ 
     appRoutes: { 
      "home": "home" 
     } 
    }); 

    var myController = { 
     "home": function() { 
      console.log("This thing just won't work."); 
     } 
    }; 


    /* Add initializers here */ 
    App.addInitializer(function() { 
     console.log('App initialized'); 

     new App.Router({ 
      controller: myController 
     }); 
    }); 


    App.on("initialize:after", function() { 
     if (Backbone.history) { 
      Backbone.history.start(); 
     } 
    }); 

    return App; 
}); 

main.js (Запускает наше приложение, определенное в application.js):

require(['marionette', 'application'], 

    function (Marionette, App) { 
    'use strict'; 

    App.start(); 
    }); 

config.js (Config для требуют .js)

require.config({ 

    baseUrl: "/scripts", 

    /* starting point for application */ 
    deps: ['marionette', 'main'], 


    shim: { 
     backbone: { 
      deps: [ 
       'underscore', 
       'jquery' 
      ], 
      exports: 'Backbone' 
     }, 
     marionette: { 
      deps: ['backbone'], 
      exports: 'Marionette' 
     } 
    }, 


    paths: { 
     backbone: '../bower_components/backbone/backbone', 
     jquery: '../bower_components/jquery/dist/jquery', 
     underscore: '../bower_components/underscore/underscore', 


     /* alias all marionette libs */ 
     'marionette': '../bower_components/marionette/lib/core/backbone.marionette', 
     'backbone.wreqr': '../bower_components/backbone.wreqr/lib/backbone.wreqr', 
     'backbone.babysitter': '../bower_components/backbone.babysitter/lib/backbone.babysitter' 
    } 

}); 

ответ

0

Кажется, что Initialize: после того, как в:

App.on("initialize:after", function() { 
    if (Backbone.history) { 
     Backbone.history.start(); 
    } 
}); 

не поддерживается в новейших версиях Marionette, и я предполагалось начать вместо этого:

App.on("start", function() { 
    if (Backbone.history) { 
     Backbone.history.start(); 
    } 
}); 

Большинство сообщений о марионетке, кажется, устарело. Тем не менее, они по-прежнему очень полезны, но обязательно проверяйте их с помощью документации официальной структуры.

Я должен был это сделать в первую очередь ..

0

Похоже, что вы missi Ссылка на контроллер маршрутизатора.

Попробуйте обновить маршрутизатор, чтобы включить ссылку на myController:

App.Router = Marionette.AppRouter.extend({ 
    controller: myController, 
    appRoutes: { 
     "home": "home" 
    } 
}); 

См AppRouter документы для больше информации: http://marionettejs.com/docs/v2.4.1/marionette.approuter.html

Смежные вопросы