jquery - 需要js Backbone 和 jqueryui

标签 jquery jquery-ui backbone.js requirejs

我在主干中有一个应用程序,当我单击应用程序外部的元素时,我会在一个 div 内创建另一个可以拖动和调整大小的 div。 我已经尝试过:

我的requirejs配置文件:

require.config({
    paths:{
        jquery:'libs/jquery/jquery-2.0.2.min',
        underscore:'libs/underscore/underscore-min',
        backbone:'libs/backbone/backbone-min',
        text:'libs/require/text',
        jquery_ajaxform  : 'libs/jquery/jquery.form',
        jquery_ui  : 'libs/jquery/jquery-ui-1.10.3.custom.min'     
    },
    shim: {
        jquery: {
            exports: '$'
        },
        underscore: {
            exports: '_'
        },
        backbone: {
            deps: ["underscore", "jquery"],
            exports: "Backbone"
        }
    }
});

require(['views/design'], function(DesignView){
    var designView = new DesignView();
});

我的设计 View :

define(['jquery' , 
        'backbone', 
        'jquery_ui',
        'models/design', 
        'collections/design', 
        'views/element',
        "text!templates/design.html"
        ], 
    function($, Backbone, jQueryUI, DesignModel, DesignCollection, ElementView, tmplDesign){
    var DesignView = Backbone.View.extend({
        initialize: function(){
            this.$el = $('#layout');
            this.template = tmplDesign;
            console.log('initialize DesignView');
            this.collection = new DesignCollection();
            var here = this;
            $('#insert-dynamic-element').click(function(){
                var element = { name:'img', type:'image' };
                here.collection.addElement(element);
                here.render();
                $('.drag-item').draggable({"containment" : "parent"})
            });
        },
        render: function(){
            var template = _.template(this.template, {elements:this.collection.toJSON()});
            this.$el.empty();
            this.$el.append(template);
        }
    })

    return DesignView;
});

模板:

<%
 _.forEach(elements, function (element, index) { 
    if(element.type == 'image'){
        console.log('fai');
    %>
    <p>fsfdsfds</p>
        <div class="insert-container-img drag-item">
            <p>IMG</p>
        </div>
    <%
    }
}); %>

我检索到此错误:

Uncaught TypeError: Object [object Object] has no method 'draggable'

我认为错误是因为 div 元素是动态创建的。
那么如何为我的 div 关联可拖动和可调整大小呢? 谢谢

最佳答案

您需要为 jquery-ui 定义一个 shim,因为它不是 AMD 模块并且依赖于 jQuery。

shim: {
  //...
  jquery_ui: {
    exports: '$',
      deps: ['jquery']
   }
}

关于jquery - 需要js Backbone 和 jqueryui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18090751/

相关文章:

jquery - 如何使用href调用jquery函数

jquery - 用户可编辑复选框标签

Jquery Tab 从选项卡内的内容链接到另一个选项卡

javascript - 在 Backbone.js 中下载 Excel

javascript - 找到从未命中非库代码的 Backbone.js 事件错误源

javascript - 绑定(bind)到 ItemView 的变化事件

javascript - Ajax 请求在 mozilla 中完美运行而不在 chrome 中运行(非常困惑,因为有时它可以运行)

用于基于节点的对象和对象关系的 Javascript 库?

javascript - jquery 1.8 及更高版本,将一个 div 的高度设置为与另一个 div 相同

jqueryui 选项卡 (1.9.1) 在加载时激活