脚本在“click”事件下工作但不是单独的(Backbone.js)

时间:2014-08-22 08:43:58

标签: javascript jquery backbone.js

我有一个canvas元素附加到View下的文档正文(与它分开)。我想将canvas元素追加到View中的div。它适用于点击,但当我把它放在渲染功能中时,它不会。这就是代码的样子:

不工作:

render : function() {
    var that = this;
    $(this.el).html(this.template());
        $('canvas').appendTo('.container3');

    return this;
}

WORKING:

events : {
 'click .qgaz': 'blabla'
},

blabla : function() {
     $('canvas').appendTo('.container3');

}

为什么会发生这种情况?如何在页面加载时使其自行运行?

编辑 - 这里是完整视图:

window.printView = Backbone.View.extend({
tagName : 'div',
className : 'print-menu-view',
initialize : function() {
    var that = this;
    // tu wybierz template z templates/main.tpl
    this.testowaZmienna = "test";
    this.template = _.template($("#print-view").html());
    console.log(this);
    return this;
},

events : {

},

render : function() {
    var that = this;
    $(this.el).html(this.template());
        $('canvas').appendTo('.container3');
        console.log(this);

    return this;
}
});

1 个答案:

答案 0 :(得分:1)

当您尝试通过.container3选择器访问该元素时,它还不是文档树的一部分,但它已经包含在缓存的jQuery对象$el中:

http://backbonejs.org/#View-$el

在缓存元素中查找.container3

this.$el('.container3').append(...)

应该这样做。