Я пишу свое первое приложение Backbone.js с бэкэндом Rails REST, и одна вещь, которая меня озадачивает, это взаимоотношения между моделями.
Это приложение, которое я пишу, будет иметь Ticket
и Client
в качестве моделей. Я также настроил коллекции Tickets
и Clients
.
Оказывается, у меня есть несколько тысяч клиентов, и я не хотел бы загружать их в память, вместо этого я хотел бы лениво загружать клиента, когда билет ссылается на него.
Я попробовал очень наивный подход, который явно не работает, потому что Model#fetch()
метод является асинхронным.
Вот моя модель Ticket (в CoffeeScript ):
class Deputy.Models.Ticket extends Backbone.Model
initialize: ->
@fetchClient()
fetchClient: ->
@client = new Deputy.Models.Client()
@client.set id: @get('userid')
@client.fetch()
clientName: ->
first = @client.get('firstname')
last = @client.get('lastname')
"#{first} #{last}"
Как вы можете себе представить, функция clientName()
всегда возвращает "undefined undefined", потому что fetch не возвращался при совершении вызова.
Как правильно обрабатывать такие типы отношений данных? Обратите внимание, что я не против, если вы сделаете шаг назад и скажете, что я использую неправильный подход, и предложите мне что-то вместо этого.
Будем весьма благодарны за любые указатели, статьи или что-нибудь еще.