我想根据AMD规范创建构造函数。我找到this answer并试图遵循它。这就是我最终的结果:
requirejs.config({
paths: {
'jquery': 'vendor/jquery-1.9.1.min',
'lodash': 'vendor/lodash-1.3.1.min',
'knockout': 'vendor/knockout-2.2.1.min',
'bootstrap': 'vendor/bootstrap-2.3.2.min'
}
});
requirejs(
['jquery', 'lodash', 'knockout', 'controller/categories'],
function main($,_,ko, CategoriesCtrl) {
var categories = new CategoriesCtrl();
}
);
define('categories', function() {
return function CategoriesCtrl(layers) {
var self = this;
layers = layers || [];
console.log(ko);
};
});
我得到的结果是CategoriesCtrl未定义。我做错了什么?
答案 0 :(得分:6)
您通过向define
'categories'
提出第一个参数来创建a named AMD module。最好尽可能避免这种情况:
您可以自己明确命名模块,但它会生成模块 不太便携 - 如果您将文件移动到另一个目录,您将 需要更改名称。通常最好避免使用名称进行编码 对于模块,只需让优化工具在模块中刻录 名。
尝试将categories.js
调整为:
define(function() {
return function CategoriesCtrl(layers) {
// etc
};
});