Backbone.js bootstrap с массивом объектов JSON

#javascript #jquery #json #backbone.js

#javascript #jquery #json #backbone.js

Вопрос:

Я пытаюсь загрузить базовую коллекцию, используя массив объектов JSON, как в приведенном ниже коде. Однако, когда я пытаюсь вызвать reset для объекта коллекции, я получаю сообщение об ошибке от backbone — Uncaught TypeError: undefined is not a function .

Если я изменю массив JSON на массив Users.UserModel объектов, тогда это сработает. Должно быть, я упускаю что-то фундаментальное в методе сбора initialization или что-то подобное, поскольку все примеры, которые я видел, на самом деле содержат не так много кода, как вызов reset .

 class Users.UsersCollection extends Backbone.Collection
    model: Users.UserModel
    url: '/Users'

class Users.UserModel extends Backbone.Model

# document ready
$ ->
    Users.userCollection = new Users.UsersCollection()

    users = [
        { Id: 1, Username: 'dan', FirstName: 'Dan', LastName: 'Ormisher' },
        { Id: 1, Username: 'simon', FirstName: 'Simon', LastName: 'Lomax' },
        { Id: 1, Username: 'jon', FirstName: 'Jon', LastName: 'Swain' },
        { Id: 1, Username: 'martin', FirstName: 'Martin', LastName: 'Rue' }
    ]

    Users.userCollection.reset(users)
 

(Кстати, я использую coffeescript, но это не имеет значения)

Ответ №1:

Я только что понял это, я прошел через свой код до точки в backbone.js файл, в котором произошла ошибка, и обнаружил, что это происходит в строке 570 (не уменьшенный obv). Там, где коллекция пыталась использовать свое собственное model свойство, используя this.model его, выдавала неопределенную ошибку.

Когда я вернулся и посмотрел на свой код, я понял, что объявлял коллекцию перед моделью, поэтому, когда я устанавливал свойство collections model , оно устанавливало для него значение undefined!

Комментарии:

1. Та же проблема для меня. Я запускал код, в котором я определял коллекцию перед моделью.