#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. Та же проблема для меня. Я запускал код, в котором я определял коллекцию перед моделью.