子视图主干上的事件呈现

时间:2015-06-17 17:11:08

标签: javascript backbone.js views

我尝试渲染多个依赖于另一个父视图的子视图。 在子视图上创建渲染函数时会出现问题。此子视图正确显示,但相关事件未初始化且无法正常工作。

这是代码。

 onSuccess : function(data) {
            this.asignView(this.subView1, '#div1', data.data1);
            this.asignView(this.subView2, '#div2', data.data2);

        },

...........

这是子视图的代码..

 events : {
    'clickT' : 'clickT',
},

 render : function(model) {
    $(this.el).html(this.template({
        model: model
    }));
    return this;
},

clickT: function(){

} ......

分配给子视图的方法是....

asignView : function(view, selector, options) {
    view.setElement(this.$(selector)).render(options);
},

那么,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

奇怪的是,我尝试将一些代码复制到jsfiddle,它似乎有用,你能指出我们的代码之间的其他差异吗?

var asignView = function(view, selector, options) {
    view.setElement(this.$(selector)).render(options);
};

var SubView = Backbone.View.extend({
    template: _.template('<span>A subView with id <%= model.id %>!</span>'),
    events: {
        'click': 'clickT'
    },
    render : function(model) {
        $(this.el).html(this.template({
            model: model
        }));
        return this;
    },
    
    clickT: function() {
        alert('Clicked');
    }
});

var subView1 = new SubView()
,subView2 = new SubView();

asignView(subView1, '#div1', {id: 1});
asignView(subView2, '#div2', {id: 2});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.1/backbone-min.js"></script>
<div id="div1"></div>
<div id="div2"></div>