Ошибка ajax в backbone.js fetch () - PullRequest
2 голосов
/ 13 июня 2011

Я собираю базовую систему CRUD для проекта, и мы решили объединить в Backbone.js & CoffeeScript, чтобы абстрагировать больше наших функций JavaScript.Кривая обучения была довольно крутой для меня, так как я не большой профессионал JS.

В данный момент я просто пытаюсь сделать запись.Любая запись.Итак, я настроил фиктивный маршрут для предоставления набора записей 'products' через JSON, чтобы посмотреть, как он рендерится, прежде чем я продолжу.

  window.Product = Backbone.Model.extend
    initialize: -> console.log this
  window.Products = Backbone.Collection.extend
    model: Product
    initialize: -> console.log this
    url: '/dummy'

Итак, в консоли я набираю:

product = new Product()

И кажется, что продукт просто отлично.Но когда я набираю:

product.fetch()

Возвращает:

TypeError: Cannot call method 'ajax' of undefined

Я попробовал то же самое с Коллекцией.

products = new Products()
products.fetch()
TypeError: Cannot call method 'ajax' of undefined

Я сделал другие части(просматривают рендеры и т. д.) работают просто отлично, но эта ошибка ajax постоянно повторяется.Я провел часы, просматривая различную документацию (включая официальную и всю информацию, которую я мог отследить из вики), пробуя код на простом JavaScript, а также CoffeeScript, реализуя разные области (с / без пространства имен окон)и т. д. В Google ничего нет.

Это должно быть что-то смехотворно простое, что я, вероятно, должен был просто знать, но я не могу понять это для своей жизни.Или это было единственное место в документации, которое я пропустил.Может кто-нибудь сказать мне, что я делаю не так?

Ответы [ 2 ]

8 голосов
/ 13 июня 2011

@ Ironchamber: чтобы использовать Ajax-метод Backbone, вы также должны предоставить библиотеку, которая обеспечивает поддержку Ajax между браузерами. Магистраль оптимизирована для использования jQuery или Zepto. Из вашего сообщения об ошибке мне кажется, что вам не хватает одного из них.

2 голосов
/ 23 июня 2012

Другое решение состоит в том, чтобы вызвать это в готовом документе:

Backbone.setDomLibrary(jQuery); 

Таким образом, порядок включения файла не имеет значения.

...