Backbone - объект рендеринга не имеет метода apply - PullRequest
7 голосов
/ 01 апреля 2012

Я получаю ошибку:

В объектном рендере нет метода, применимого к приведенному ниже коду.

В чем может быть причина? HTML-страница не содержит никакого кода, кроме ссылки на javascript.
что я должен сделать, чтобы удалить ошибку?

(function($) {

    window.Book = Backbone.Model.extend({});

    window.Library = Backbone.Collection.extend({

        model: Book

    }); // end of Collection
    window.LibraryView = Backbone.View.extend({

        el: $('body'),

        events: {
            'click button#btn_add': 'btn_add'

        },

        initialize: function() {
            $(this.el).append("View initialized");
            _.bindAll(this, 'render', 'btn_add');
            this.collections = new Library();
            this.collections.bind('add', 'render', this);
            this.startingDisplay();

        },
        startingDisplay: function() {
            $(this.el).append("<input type='text' id='t1' /><button id='btn_add'>Add</button>");

        },

        btn_add: function() {

            book = new Book({
                title: "first"
            });
            alert("Name : " + book.get('title'));
            this.collections.add(book);
        },

        render: function() {
            alert("render called");

        },

    }); // end of LibraryView
    libraryview = new LibraryView();

})(jQuery);​

1 Ответ

4 голосов
/ 01 апреля 2012

Вы не используете правильный синтаксис для привязки события коллекции add.Использование:

// this.collections.bind('add', 'render', this);
this.collections.bind('add', this.render, this);

Ожидается, что вторым параметром будет обратный вызов (функция).

DEMO

...