3

我想根据 AMD 规范创建构造函数。我找到了这个答案并试图遵循它。这就是我最终得到的结果:

main.js

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();

    }
);

控制器/categories.js

define('categories', function() {

    return function CategoriesCtrl(layers) {

        var self = this;
        layers = layers || [];

        console.log(ko);

    };
});

我得到的结果是 CategoriesCtrl 是未定义的。我做错了什么?

4

1 回答 1

6

您通过第一个参数设置为define 'categories'. 最好尽可能避免这种情况:

您可以自己显式命名模块,但这会降低模块的可移植性——如果将文件移动到另一个目录,则需要更改名称。通常最好避免在模块名称中编码,而让优化工具在模块名称中烧录。

尝试categories.js对此进行调整:

define(function() {

    return function CategoriesCtrl(layers) {

        // etc

    };
});
于 2013-06-28T15:46:26.533 回答