Nar*_*esh 2 amd requirejs backbone.js
执行以下'main'模块时,我得到一个"TypeError:OrdersPage不是构造函数"
require(
[
'app/pages/orders/OrdersPage'
],
function(OrdersPage) {
'use strict';
new OrdersPage();
}
);
Run Code Online (Sandbox Code Playgroud)
事实证明,当我在函数内部(OrdersPage)时,"OrdersPage"未定义.所以问题是为什么它是未定义的 - 尽管将OrdersPage定义为依赖?
这是OrdersPage的代码,它实际上是被击中的,但是在打印出上述错误之后:
require(
[
'backbone'
],
function() {
'use strict';
console.log('In OrdersPage');
return Backbone.View.extend({
});
}
);
Run Code Online (Sandbox Code Playgroud)
总之,控制台输出如下:
TypeError: OrdersPage is not a constructor
In OrdersPage
Run Code Online (Sandbox Code Playgroud)
这告诉我在加载并执行'main'模块后正在加载OrdersPage模块,这已经太晚了!
编辑2 我已经在RequireJS配置中声明了Backbone:
require.config({
// Initialize the application with the main application file
deps: ['main'],
paths: {
// jQuery
jquery: 'vendor/jquery-1.8.3',
// Underscore
underscore: 'vendor/underscore-1.4.3',
// Backbone
backbone: 'vendor/backbone-0.9.9',
// Templating
handlebars: 'vendor/handlebars-1.0.rc.1'
},
shim: {
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
handlebars: {
exports: 'Handlebars'
},
underscore: {
exports: '_'
}
}
});
require(
[
'app/pages/orders/main'
],
function() {
'use strict';
}
);
Run Code Online (Sandbox Code Playgroud)
你应该使用define(),而不是require().它们非常相似,但require()不会对返回的值执行任何操作,也不会设置模块.
define(['backbone'], function() {
'use strict';
console.log('In OrdersPage');
return Backbone.View.extend({
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2182 次 |
| 最近记录: |