У меня есть простая часть моего приложения Ember, которое должно нарисовать список книг. Проблема в том, что если пользователь посещает список до того, как книги будут загружены с сервера, список будет пустым. Даже после того, как данные закончат загрузку, список все равно будет пустым.Как обновить шаблоны в Ember при добавлении/удалении данных?
Какие методы требуется, чтобы Ember обновил представление после загрузки данных? И где было бы подходящим местом для размещения этого кода? Вот что мой код выглядит следующим образом:
Маршрут:
App.MyRoute = Ember.Route.extend({
model: function() {
return App.store.find(App.Book); // get books from the server
}
});
Шаблон:
{{#each book in model}}
<li {{ bindAttr data-book-id="book.id" }}>
<span>{{ book.name }}</span>
</li>
{{/each}}
Для записи, я хотел бы сделать что-то вроде этого:
{{#if model.get('isLoaded')}}
{{#each book in model}}
<li {{ bindAttr data-book-id="book.id" }}>
<span>{{ book.name }}</span>
</li>
{{/each}}
{{else}}
<span>Loading books...</span>
{{/#if}}
У помощника '{{each}}' также есть '{{else}}', в котором вы бы добавили прядильщик для своего списка, почти так же, как и для отдельного элемента. Что касается заполнения списка, вам не нужно вручную вызывать какой-либо метод, поскольку инфраструктура отвечает за заполнение записей в «ModelArray», которые он вам дал. Если он не может заполнять данные, даже если он получает JSON из вашего backend API, проблема должна быть в вашем магазине/адаптере/сериализаторе или формате JSON. Что вы посылаете? как вы настроили свой магазин? – MilkyWayJoe
Ах, вот и все. В моей модели «model» я фактически конвертирую «ModelArray» в обычный массив JavaScript и использую это как модель (хотя я не показывал это в моем коде выше). Вот почему Ember не обновляется автоматически. Если вы опубликуете официальный ответ, я приму это. Благодаря! – NudeCanalTroll
Добавлен ответ из комментария – MilkyWayJoe