变量不存在于范围内(使用requirejs / backbone)

时间:2014-07-22 16:19:08

标签: javascript backbone.js requirejs

以下是我的bb视图的一部分:

define(['backbone', 'tools/logger', 'icanhaz', 'view/loader', 'text!template/root.ich',
    'view/users', 'view/chart/monthly_balance', 'datatables'],
function(Backbone, logger, ich, loader, template,
    UsersView, MonthlyBalanceChartView) {

    // here I can see both `loader` and `template` variables

    'use strict';

    return Backbone.View.extend({

        [...]

        initialize: function(options) {
            logger.init('root');
            // I can't see `loader` and `template` here
        },

        [...]

    });
});

问题是,我无法在视图的初始化方法中看到两个变量,而且我不知道为什么。我认为它应该陷入关闭。我使用谷歌浏览器的开发者工具断点进行测试。就在use strict之前,我可以看到所有内容(加载器和模板变量已设置)。所有其他变量都可以访问。

例如,整个加载器文件是:

define(
    ['icanhaz', 'tools/logger'],
    function(ich, logger) {
        return {
            loadTemplate: function(tpl) {
                $(tpl).each(function() {
                    if (this.outerHTML) {
                        ich.addTemplate(this.id, $(this).text());
                        logger.log('LOADED', this.id);
                    }
                });
            }
        };
    });

这些变量未定义的原因是什么?

1 个答案:

答案 0 :(得分:0)

打开控制台,在网络选项卡上,尝试为此js文件加载提供资金

也许您需要使用shim命令加载非模块文件

请阅读这里的shim示例.. https://github.com/requirejs/example-jquery-shim

希望它有所帮助。