1

所以在这里我有两个视图 addBook 和 showBooks ,想法是,当我点击一个按钮时,它应该向 DOM 添加书名和作者

  • ,我应该可以点击它。但问题在于每个人
  • 元素添加了多个事件处理程序。也就是说,对于每个新的内部视图,都添加了多个点击事件,我在骨干网中很新,我仍然处于黑暗中这是我的代码,首先是外部视图

    var addBook = Backbone.View.extend({
            el : $('#addbook'),
            model : bookmodel,
            template : _.template(addbookTemplate,{}),
            initialize : function(val){
                this.el.html(this.template);
                bookcollection.bind('add', this.showOff)
            },
            render : function(){
            },
            events : {
                'click #addbookbutton' : 'addHandler'
            },
            addHandler : function(){                
                var book =  new this.model;
    book.addValues($('#bookname').val(), $('#bookauthor').val());
     bookcollection.add(book);
    
    
            },
            showOff : function(buk){
                this.xx = new showval({model: buk});
                $('#fatman').append((this.xx.render().el));
            }
        });
        return addBook;
    

    现在是第二个和内部视图

    var showbooks = Backbone.View.extend({
            events : {
                'click .individual' : 'deleteHandler'
            },
            initialize : function(values){
                _.bindAll(this);
                /*if(values){*/
    
                    //return this.template;
                //}
                //values = (values == "") ? {} : values;
                this.el.append(this.template);
            },
            render : function(){
                this.el = _.template(show, {name : "Max", author : "jk"});
                this.delegateEvents();
                return this;    
            },
    
            deleteHandler : function(e){
                alert("this kills me")
            }
        });
        return showbooks;
    

    现在这是我单击按钮时的问题

  • 已添加到 DOM 按钮,但对于每个新的 li 都会触发一个警报...非常感谢您的帮助,我知道我错过了一些关键点.. !!

  • 4

    1 回答 1

    1

    我采用了您的代码并稍作更改。我创建了 2 个Backbone.View,一个作为容器,一个用于书籍。这很粗糙,但希望能让您了解哪里出错了。http://jsfiddle.net/cQEu2/

    于 2013-03-03T15:50:55.143 回答