require.js + backbone.js - 根据路由器的条件定义要求

时间:2013-05-25 01:22:26

标签: jquery backbone.js requirejs

好的,我正在尝试从路由器传递变量,以有条件地要求基于路由的某些视图/模板。

以下是一个示例路线:

app_router.on('route:showDashboardView', function () {
        var dashboardView = new DashboardView({pageID:1, gridID:1, modal_view:'views/modalView'});
    });

以下是一个示例视图定义:

define([
'jquery',
'underscore',
'backbone',
'routers/router',
'text!templates/_header.html',
'text!templates/_dashboard.html',
'models/UserSetupModel',
'collections/UserSetupCollection',
'collections/PageSetupCollection',
'views/globalView',
'modal',
'validation',
 //I would like the "modal_view" here.
], function ($, _, Backbone, Router, HeaderTemplate, DashboardTemplate, UserSetupModel, UserSetupCollection, PageSetupCollection, GlobalView, modal, validation, ModalView){
    'use strict'; 
//...etc

我想它不需要通过路由器...因为我不认为这是可能的。正在我加载路由器。

只是想知道如何实现这一目标。

谢谢!

1 个答案:

答案 0 :(得分:2)

您无法在运行时更改视图的依赖项。但是,在实例化视图并将类作为参数传递之前,您可以要求 modal_view 定义。像

这样的东西
app_router.on('route:showDashboardView', function () {
    require(['views/modalView'], function(ModalView) {
        var dashboardView = new DashboardView({
            pageID: 1,
            gridID: 1, 
            modal_view: ModalView
        });
    });
});