Backbone.js Click事件多次触发

时间:2015-06-10 02:08:03

标签: backbone.js underscore.js

是否有为backbone.js提供论坛/问题跟踪网站?

我有一个问题,点击事件多次触发。我找到了一个使用Underscore.js,debounce方法的工作。

最新的backbone.js是否解决了问题?

请在此建议我。

Raja K

define([
'jquery', 'underscore','backbone',], function($, _, Backbone,Marionette) {

 var Sample = Backbone.Marionette.ItemView.extend({

    template: 'sample/sample',

    model : new Model(),

    render: function() {
        id = utils.getStorage('some_id');
        if(parseInt(id) > 0 ) { 
            this.model.set({some_id:id});
            this.rendersome(id);
        } else {
            data = new Model().toJSON();
            this.renderdata(data);
        }
    },

    events: {
                   "click #some"    : "someinfo" 
            },

    someinfo : function() {
        var self = this;
                    $.ajax({
                            url: API_URL + "sample/sampleinfo",
                            type: 'POST',
                            crossDomain: true,
            cache: true,
                            data: JSON.stringify({ 'code1': this.model.get('code1'), 
                           'code2' : this.model.get('code2'),
                        "auth" : init.auth, "user_id" : init.user_id }),
                            contentType: 'application/json',
                            success: function(data,response,jqXHR) {
                                  if('SUCCESS' == data._meta.status && data.records.message.me == 'positive') {
                                            self.model.set(data.records);
                                            self.renderdata(data.records);
                                  } else {
                    console.log(data.records.message);  
                    return false;
                  }
                            },
                            error: function (request, status, error) {
                                    console.log(request);
                            }
                    });
    },

            change: function (event) {
                    var target = event.target;
                    var change = {};
                    change[target.name] = target.value;
                    this.model.set(change);
            },

});

return Sample;
});

下面的路由器初始化代码,

   routeaction : function() {
           var Header = new HeaderView({'el': '#header'});
           Header.render();
           var test = new Tview({'el': '#content'});
            test.render();
            }

更新:我正在使用backbone.subroute并且视图被破坏但在此之后没有渲染。因为引用相同元素的旧对象和当前对象都是如此。但为什么它不再渲染?你能告诉我我在这里缺少什么吗?

 render: function () {

                  // remove the existing header object
                  if(typeof gheader == "object") gheader.close();

                    // render the object      
                    self.$el.html(tmpl(data));
 },

更新:我猜view.remove()工作正常。我在$ el重用了容器,view.remove()删除了容器元素并停止渲染其他视图。我应该重新创建容器吗? 我可以使用“tagName”,但建议我如何应用样式表?

1 个答案:

答案 0 :(得分:-1)

  

undelegateEvents()删除所有视图的委派事件。如果要禁用或删除视图,则非常有用   DOM暂时。

http://backbonejs.org/#View-undelegateEvents