1

我在让Gridstack在 Backbone 应用程序中工作时遇到问题。

RequireJS 配置的精简版本如下所示:

require.config({
    paths: {
        jquery:                       '../assets/packages/jquery/1.12.0/jquery.min',
        underscore:                   'libs/underscore/underscore-min',
        jqueryui:                     '../assets/packages/jqueryui/1.11.4/custom/jquery-ui.min',,
        gridstack:                    '../assets/packages/gridstack/0.2.4/gridstack.min',
    },
    shim: {
        "gridstack": {
            deps: ["jquery", "jqueryui", "underscore"],
        },
    }
});

问题是 Gridstack 试图为 Lodash 和 jQueryUI 组件“core”、“mouse”、“draggable”、“resizable”和“widget”查找获取文件。见下图。

在此处输入图像描述

Backbone 视图文件(再次简化)如下所示:

define([
    'jquery',
    'jqueryui',
    'underscore',
    'backbone',
    'gridstack',
], function(
    $,
    jqueryui,
    _,
    Backbone,
    gridstack
    ){

    var MyView = Backbone.View.extend({
        el: $("#page"),
        className: "MyView",

        initialize: function(){
            console.log('gridstack', gridstack);
        },
    });

    return MyView;
});

我使用的是 Underscore.js (1.8.3) 而不是 Lodash,但是这里的文档应该没问题:https ://github.com/troolee/gridstack.js

是否有强制 Gridstack 了解它的所有依赖项都已加载?

编辑 2016-02-18 12:47:00

jQueryUI 从https://jqueryui.com/download/下载,包含除 Tooltip 之外的所有内容;与 Bootstrap 一起使用时会导致问题。

我看到很多人通过 Bower 获得了 AMD 版本的 jQueryUI。但是,该软件包适用于其他所有内容,因此我倾向于认为问题出在 Gridstack 上。

4

2 回答 2

0

虽然 Gridstack 的问题仍然存在,而且 Gridstack 的作者并不打算完全支持 RequireJS ( https://github.com/troolee/gridstack.js/issues/332 ),但我找到了一个名为Gridster的替代解决方案。

于 2016-02-19T16:27:58.583 回答
0

对于 jquery-ui not found 错误,我必须在 require.config 中使用 map 将所有文件映射到单个文件

paths: {
    "jquery": "path/to/jquery-3.2.1.min",
    "jquery-ui": "path/to/jquery-ui.min",
    "gridstack": "path/to/gridstack",
},
map: {
    'c/gridstack.jQueryUI': {
        'jquery-ui/data': 'jquery-ui',
        'jquery-ui/disable-selection': 'jquery-ui',
        'jquery-ui/focusable': 'jquery-ui',
        'jquery-ui/form': 'jquery-ui',
        'jquery-ui/ie': 'jquery-ui',
        'jquery-ui/keycode': 'jquery-ui',
        'jquery-ui/labels': 'jquery-ui',
        'jquery-ui/jquery-1-7': 'jquery-ui',
        'jquery-ui/plugin': 'jquery-ui',
        'jquery-ui/safe-active-element': 'jquery-ui',
        'jquery-ui/safe-blur': 'jquery-ui',
        'jquery-ui/scroll-parent': 'jquery-ui',
        'jquery-ui/tabbable': 'jquery-ui',
        'jquery-ui/unique-id': 'jquery-ui',
        'jquery-ui/version': 'jquery-ui',
        'jquery-ui/widget': 'jquery-ui',
        'jquery-ui/widgets/mouse': 'jquery-ui',
        'jquery-ui/widgets/draggable': 'jquery-ui',
        'jquery-ui/widgets/droppable': 'jquery-ui',
        'jquery-ui/widgets/resizable': 'jquery-ui',
    }
}
于 2018-09-25T23:10:08.607 回答