渲染Marionette模块后,使用Require.js加载js插件

时间:2016-02-05 15:57:08

标签: javascript jquery backbone.js requirejs marionette

我是Marionette和Requirejs的新人。我开始将旧的代码结构(主干)更改为Marionette。使用Requirejs我将我的初始html页面中所需的旧脚本列表更改为Requirejs sintax。在那之前很好,脚本会加载到我要求的每个模块中。例如:

define(['App', 'dhController', 'menu', 'gridmenu', 'menubar', 'sidebar', 'asPieProgress'], function(app) {
  app.module('dh.Views', function (Views, app, Backbone, Marionette, $, _)   {

  ....other stuff...
        //----- REQUESTS -----

        // Dashboard Request Item View
        // -------------------
        //
        // Display an individual request panel

        Views.ERequest = Marionette.ItemView.extend({
            tagName: 'div',
            template: '#template-request', **<-- In this template is the pluging needed**

            ui: {
                pieChart: '.pie-progress-level'
            },

            onRender: function () {
                this.ui.pieChart.asPieProgress("go", 50);
            }
        });

        // Dashboard Request Collection View
        // -------------------
        //
        // Display a list of requests

        Views.ERequests = Marionette.CollectionView.extend({
            tagName: 'ul',
            childView: Views.ERequest,

            initialize: function () {
                this.render();
            },

            ui: {}
        });
});

问题是:我知道必须加载页面才能使用这些插件(在本例中是jquery-asPieProgress)。那么,如何在整个页面呈现后加载这些脚本文件..因为如果我使用 define([..],function(..){}); 要求(..) 。正如我所说,脚本之前已加载,它们不会执行任何操作。

希望它很清楚。感谢

嗯,我想这取决于你如何构建你的应用程序。就我而言,我有一个内置典型路由器逻辑的模块。好吧,在同一个文件中,我添加了(最后)一个超时为100的函数,我需要我需要的元素。

var app = require('App');
app.module('CRouter', function (CRouter, App, Backbone, Marionette, $, _) 
{ ... router logic ...});

    /**
     * Load all the files needed in template
     */
    setTimeout(function() {
        require(['menu', 'menubar', 'sidebar', 'gridmenu', 'configcolors', 'configtour', 'breakpoint', 'asScrollable'],
            function() { ... run whatever which needs these libs ... }
        );
    }, 100); 

您可以在此处查看并清除示例:http://requirejs.org/docs/api.html#afterload

0 个答案:

没有答案