2013-03-14 7 views
6

Каков наилучший способ загрузки данных для приложения emberjs при загрузке страницы. Я знаю, что он скорее всего получит данные из атрибута данных или данных в скрытом div, но где в жизненном цикле приложения emberjs это будет продолжаться?Загрузочные данные в ember.js

+0

могли бы вы объяснить, «пользователь возвращается» часть немного больше в глубину? например, используете ли вы локальное хранилище или файлы cookie или что-то еще в браузере, которое доступно сразу (чтобы показать некоторый контент) до того, как произойдет событие $ .ajax? –

+0

«Пользователь возвращается» подразумевает, что есть сеанс. Таким образом, у меня будет встроенный json json в html, который приложение ember будет использовать для загрузки (наряду с другой информацией, а не только с пользователем). То, что я пытаюсь выяснить, - лучшее место в жизненном цикле приложений ember, чтобы захватить данные из html и использовать его. – spullen

ответ

3

Существует несколько различных видов данных, которые вы можете загрузить. Я использую ember-data модели наряду с DS.FixtureAdapter (для статических данных) или DS.RESTAdapter (для динамических данных

Это небольшой пример использования светильников:.

App.Store = DS.Store.extend({ 
    revision: 11, 
    adapter: 'DS.FixtureAdapter' 
}); 

App.Page = DS.Model.extend({ 
    title: DS.attr('string') 
}); 

App.Page.FIXTURES = [{ 
    id: 1, 
    title: "Test Title #1" 
    }, { 
    id: 2, 
    title: "Random Title #2" 
    }]; 

В моем (низковато) приложении Я просто загружая данные прибора непосредственно после определения магазина и моделей.Это хорошо работает для простых ассоциаций один к одному (подумайте о статическом листинге типов или категорий). При использовании данных типа без привязки он просто указывается как атрибут model на маршруте, и загружается при необходимости.

Обновление

Для предварительной загрузки исходных данных (например, начальное состояние страницы как LoggedIn) на странице загрузки вы можете использовать DS.Store#load:

Store = DS.Store.create({ 
    revision: 11 
}); 

Page = DS.Model.extend({ 
    title: DS.attr('string') 
}); 

Store.load(Page, {id: 1, title: 'Wow Cool Title'}); 

Store.find(Page, 1).get('title') //=> 'Wow Cool Title' 
+1

Я использую RESTAdapter. Я пытаюсь понять, как загрузить данные, которые у меня есть на странице, когда я делаю все сначала. Так, например, у меня есть текущий пользователь, которого я хочу отслеживать, и я хочу загружать текущего пользователя на загрузку страницы (например, пользователь закрывает страницу и возвращается позже). – spullen

+0

я думаю это будет работать. Вы знаете, принимает ли Store.load массивы? Если нет, я полагаю, что я мог бы просто перебрать внедренные данные и сделать загрузку Магазина для каждого. – spullen

+2

Да, вы можете загружать более одной записи за раз с помощью 'DS.Store.loadMany' (см. Определение [здесь] (https://github.com/emberjs/data/blob/master/packages/ember-data /lib/system/store.js#L1616) и несколько тестов [здесь] (https://github.com/emberjs/data/blob/master/packages/ember-data/tests/unit/store_test.js#L211). –

Смежные вопросы