2013-09-11 3 views
5

Я пытаюсь запустить новый проект с помощью ember app kit и данных ember с использованием ES6. Я сумел создать хранилище, используя следующий код в adapter.jsEmber App Kit с данными ember

var ApplicationAdapter = DS.FixtureAdapter.extend(); 
export default ApplicationAdapter; 

Однако, я не в состоянии создать модель и доступ к нему. В models/account.js у меня есть этот

var Account = DS.Model.extend({ 
    name: DS.attr('string') 
}); 

Account.FIXTURES = [ 
    { 
    'id': 1, 
    'name': 'Acc 1' 
    }, { 
    'id': 2, 
    'name': 'Acc 2' 
    } 
] 

export default Account; 

и в моем routes/accounts.js у меня есть это:

var AccountsRoute = Ember.Route.extend({ 
    model: function() { 
    var store = this.get('store'); 
    return store.find('account'); 
    } 
}); 
export default AccountsRoute; 

На данном этапе я просто пытаюсь получить список учетных записей из светильников, отображаемых на экране. Маршрут работает хорошо, и если я помещаю статические данные (например, индексный маршрут), все работает отлично. Однако, с приведенным выше кодом, я столкнулся с проблемой

DEPRECATION: Action handlers contained in an `events` object are deprecated in favor of putting them in an `actions` object (error on <Ember.Route:ember352>) 
    at Object.triggerEvent (http://localhost:8000/vendor/ember/index.js:30519:13) 
    at trigger (http://localhost:8000/vendor/ember/index.js:29641:16) 
    at handleError (http://localhost:8000/vendor/ember/index.js:29903:9) 
    at invokeCallback (http://localhost:8000/vendor/ember/index.js:8055:19) 
    at null.<anonymous> (http://localhost:8000/vendor/ember/index.js:8109:11) 
    at EventTarget.trigger (http://localhost:8000/vendor/ember/index.js:7878:22) 
    at http://localhost:8000/vendor/ember/index.js:8180:17 
    at Object.DeferredActionQueues.flush  (http://localhost:8000/vendor/ember/index.js:5459:24) 
    at Object.Backburner.end (http://localhost:8000/vendor/ember/index.js:5545:27) index.js:394 
Error while loading route: 
Object {readyState: 4, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…} 
index.js:394 
Uncaught #<Object> index.js:30566 

Где я иду не так?

ответ

7

Ваш Account модель использует DS.RESTAdapter вместо DS.FixtureAdapter, потому что вы настраиваете адаптер в ApplicationAdapter, ожидаемый в AccountAdapter. Таким образом, вы получаете сообщение об ошибке из ajax, возможно, потому, что URL-адрес не соответствует серверу.

Чтобы настроить DS.FixtureAdapter за использование модели:

var AccountAdapter = DS.FixtureAdapter.extend(); 
export default AccountAdapter; 

Или как глобальный адаптер для всех моделей:

App.Store = DS.Store.extend({ 
    adapter: DS.FixtureAdapter 
}); 

Я надеюсь, что это помогает

+0

Я использую fixtureadapter. Это почти так, как вы предложили – Gevious

+0

Извините. Я имею в виду, что вы используете адаптер для отдыха из-за неправильной конфигурации. Но вы хотите использовать прибор ... –

+0

Решил ли мой ответ вашу проблему? –

1

я получаю ту же ошибку .. .

Однако я смог исправить это, импортировав приложение ApplicationAd Аптер, и с помощью, чтобы определить мой магазин:

приложение/адаптеры/application.js:

var ApplicationAdapter = DS.FixtureAdapter.extend(); 

export default ApplicationAdapter; 

приложение/магазин/application.js:

import ApplicationAdapter from 'appkit/adapters/application'; 
var Store = DS.Store.extend({ 
    adapter: ApplicationAdapter 
}); 

export default Store; 

Имейте в виду, я не имею теперь изменилось имя приложения по умолчанию от appkit, возможно, вам придется изменить это имя или пути, чтобы сделать эту функцию должным образом для вас.

2

Я думаю, что настоящая проблема заключалась в том, что вы определили адаптер адаптера в адаптерах/adapter.js.

Когда вы назвали:

store.find('account'); 

Он правильно нашел модель, но потом посмотрел на правильный адаптер. У вас нет адаптеров /account.js, поэтому он использовал стандартное приложение, о котором упоминалось, является RESTAdapter.

Чтобы заставить ваш пример работать, просто измените имя файла.

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