Я пишу свое первое приложение Backbone.js с бэкэндом Rails REST, и одна вещь, которая меня озадачивает, - это отношения между моделями.Загрузка отношений модели с Backbone.js
Это приложение, которое я пишу, будет иметь Ticket
и Client
в качестве моделей. Я также установил как Tickets
, так и Clients
.
Оказалось, что у меня есть несколько тысяч клиентов, и я бы не хотел их загружать в память, вместо этого я хотел бы лениво загрузить клиента, когда билет ссылается на него.
Я пробовал очень наивный подход, который, очевидно, не работает, потому что метод Model#fetch()
является асинхронным.
Вот моя модель билета до сих пор (в 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()
всегда возвращает «неопределенными неопределенными», поскольку выборка не возвращался, когда сделан вызов ,
Каков правильный способ обращения с такими отношениями данных? Обратите внимание, что я не против, если вы сделаете шаг назад и скажете, что я использую неправильный подход и предлагаю мне что-то вместо этого.
Любые указатели, статьи или что-либо еще будет принята с благодарностью.
Спасибо за ответ. Однако что делает 'Vice.Models.clientName (lead)' точно и откуда оно взялось? – kolrie
Ничего, я понял! – kolrie