0

我有我的模型的视图,在初始化中我使用以下代码

initialize: function (){
        _.bindAll(this, 'render'); 
        this.listenTo(this.model, "change", this.render);
        this.$el.draggable({
            opacity: 0.5,
            containment: "parent"
        });
        this.$el.resizable();
        this.$el.selectable();
    },

虽然可拖动的作品,可调整大小和可选择的作品没有(我还没有测试过其他 jQuery UI 交互来检查它们是否有效)。我尝试将其放置this.$el.resizable在渲染函数中,但这也不起作用。我正在使用 jQuery 1.8.3 和 jQuery UI 1.9.2(我确实在我的 html 中包含了必要的 jquery-ui.css)。当视图呈现时,我检查浏览器中的元素,它确实有一个类,ui.draggable, ui.resizable并且ui.selectable它应该是,但它只是可拖动的。

试图解决这个问题,我在resize: both要调整大小的元素的类中使用了 CSS3 属性,它工作得很好,但我真的很想利用 jQuery UI 来调整大小,我很好奇为什么它赢了不行。

有什么想法我可能做错了吗?

编辑:添加了 jsfiddle 示例http://jsfiddle.net/IgnorantUser/u7JkX/所描述的问题是在ButtonInCanvas主干视图的初始化中

4

1 回答 1

0

好的,显然this.$el.html(this.template(this.model.toJSON()));在我的ButtonInCanvas视图上的渲染功能中使用是导致问题的原因。上述获取模型的“标题”属性,并将其作为 html 内容传递到视图中。

解决方案是放入this.$el.html(this.template(this.model.toJSON()));init函数。如果需要在渲染函数中完成,应该有另一个 div,在我们要调整大小的那个中,它将从模型中获取标题属性。在下面的 JSBIN 中,您可以看到在按钮内使用 div 的解决方案。(感谢用户 shoky,来自 #jquery freenode irc 频道的实现和他的提醒) http://jsbin.com/uxequq/1/edit

我真的不明白为什么会出现问题(也许this.template(this.model.toJSON())在我的渲染函数中,导致视图重新渲染?)所以请随时指出原因,并帮助我进一步理解!

干杯!

于 2013-01-23T16:26:20.233 回答