使用jquery-ui小部件

时间:2016-08-02 10:56:03

标签: javascript jquery jquery-ui requirejs

我想使用jquery-ui的可排序小部件。我安装了jquery-ui:

bower install jquery-ui

我正在使用require.js。我添加了一段jquery-ui / sortable:

paths: {
    ...
    'jquery.ui/sortable': 'bower_components/jquery.ui/ui/widgets/sortable'
    ...

在我的模块中,我导入:

define(
[
    'jquery.ui/sortable',
    ...
],
function(
    sortable,
    ...
) {

这会给我带来大量错误,因为sortable.js会尝试导入其依赖项。我能让它工作的唯一方法是为sortable.js的每个依赖项添加一个路径:

    'jquery.ui/sortable': 'bower_components/jquery.ui/ui/widgets/sortable',
    'jquery.ui/mouse': 'bower_components/jquery.ui/ui/widgets/mouse',
    'jquery.ui/scroll-parent': 'bower_components/jquery.ui/ui/scroll-parent',
    'data': 'bower_components/jquery.ui/ui/data',
    'ie': 'bower_components/jquery.ui/ui/ie',
    'version': 'bower_components/jquery.ui/ui/version',
    'widget': 'bower_components/jquery.ui/ui/widget',

这似乎是一种非常艰巨的方式。此外,“数据”,“即”,“版本”和“窗口小部件”仅在我不命名它们时才有效。

这是使用jquery-ui小部件的正确方法吗?

1 个答案:

答案 0 :(得分:0)

如果您引用的所有模块最终都在bower_components/jquery.ui/ui/widgets/下,那么您可以使用map而不是列出每个模块的paths

map: {
  "*": {
    "jquery.ui": "bower_components/jquery.ui/ui/widgets"       
  }
}

这应该将每个请求映射到jquery.ui/xbower_components/jquery.ui/ui/widgets。由于地图会将模块名称转换为其他模块名称,因此bower_components/jquery.ui/ui/widgets中从..导入的任何模块都将从bower_components/jquery.ui/ui获取模块。