首页新闻找找看学习计划

backbone.js 中view 重新渲染 后 原来 events 里面的事件失效啦

0
悬赏园豆:20 [待解决问题]

backbone.js 中view  重新渲染 后 原来 events 里面的事件失效啦

//定义视图
var AppView = Backbone.View.extend({

    tagName: "Div",
    events: {

        "click #btnSearch": "onbtnSearchClick"

    },

    initialize: function() {

        this.model = this.model;
        this.model.on("change", "ondataChange");

    },
    render: function() {
        var template = '<input type ="button"  value="{{btnname}}" id="btnSearch">';
        var html = Mustache.render(this.model.toJSON());
        this.el.innerHTML = html;
        $("#content").empty().append(this.el)
    }
    ondataChange: function() {
        this.render();
    },
    onbtnSearchClick: function() {
        alert("按钮事件");
    }

})
//定义model
var MyModel = Backbone.Model.extend({
    initialize: function() {}
}) 

$(function() {
    window.myModel = new MyModel;
    window.appView = new AppView({
        model = myModel;
    });
    appView.render();

})

//单击按钮 改变model
function BtnCLick() {
    var name = Math.random();
    window.myModel.set({
        btnname: name
    });
}

 

 

当model 内容改变导致View 重绘的时候视图里面的按钮事件就没了

不知道是本来就是这样还是我写的有问题 ,大侠们帮忙看看

QA龙的主页 QA龙 | 初学一级 | 园豆:162
提问于:2012-12-20 10:44
< >
分享
所有回答(2)
1

肯定失效啊,重绘后页面上的button不是原来的button了,只是id相同但是两个对象,事件没了。

重新加一下事件就行

卒子 | 园豆:588 (小虾三级) | 2012-12-20 17:08

怎么重新加载一下事件啊?重新new一遍view?
绑定事件不是在new view 初始化的时候绑定的么

支持(0) 反对(0) QA龙 | 园豆:162 (初学一级) | 2012-12-21 12:40

@QA龙:  重新触发一下event事件应该可以

支持(0) 反对(0) 卒子 | 园豆:588 (小虾三级) | 2012-12-21 16:41
2

重新绘制页面元素后原有的事件需要重新触发绑定.可在render之后使用this.delegateEvents();即可

jujusharp | 园豆:202 (菜鸟二级) | 2013-02-16 15:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册