2014-01-25 2 views
1

Я попытался заполнить шаблон Ember Data. Я получаю странную проблему, когда пытаюсь найти модель внутри своего DS Store. Я следил за некоторыми учебниками, но получил раздражающую ошибку.Ember Данные: невозможно получить модель из хранилища данных

Ошибка: «Ошибка при загрузке маршрута: неопределенный».

Что я пробовал:

MovieTracker.Store = DS.Store.extend({ 
    url: 'http://addressbook-api.herokuapp.com' 
}); 

MovieTracker.Contact = DS.Model.extend({ 
    first: DS.attr('string'), 
    last: DS.attr('string'), 
    avatar: DS.attr('string') 
}); 

MovieTracker.Router.map(function() { 
    this.resource('contacts'); 
}); 

MovieTracker.ContactsRoute = Ember.Route.extend({ 
    model: function(){//works when changing to 'activate:' 
     //return; //this works! it shows me a simple template and updates URL to index.html#/contacts 
     return this.store.find('contact');//error: 'Error while loading route: undefined' 
    } 
}); 

В Index.html У меня есть простой # ссылка-на на «контакты» (приложение руль), он хорошо работает. У меня также есть простой шаблон, называемый контактами, который отлично работает, когда я отказываюсь от строки this.store.find ('contact').

JSBin: http://emberjs.jsbin.com/OxIDiVU/170/edit?html,js,output JSON в: http://addressbook-api.herokuapp.com/contacts

Можете ли вы дать мне совет? Вы предпочли бы Ember Data вообще (1.0 Beta 5). Другой вопрос: сайт без предварительной компиляции рулей не будет хорошей идеей?

Большое спасибо за чтение!

+0

Действительно ли ответ с сервера? Вы можете отправить ответ с сервера. Получение данных Ember для работы немного проблематично, но как только все будет разработано, оно работает очень хорошо. У меня довольно большой сайт, настроенный на данные Ember.js и Ember. – Gogu

+0

Привет, Гогу, конечно, это специальный URL-адрес, который я использую: http://addressbook-api.herokuapp.com. Ember Data должен фактически получить доступ к этому сайту/контактам и получить JSON. Надеюсь, мне удастся все наладить, как вы, спасибо! – TechWisdom

+0

Я продолжал поиграть и обнаружил, что если я изменю свойство «model:» в ContactsRoute, чтобы «активировать»: он продвигается дальше. Ошибка не отображается, но другая ошибка кричит мне о '#each loop over должен быть Array'. Я не знаю, что означает изменение «модели» для «активации», но надеюсь, что это поможет вам понять происхождение ошибки. – TechWisdom

ответ

1

При определении хоста вы определяете, что на адаптере, а не в магазине.

MovieTracker.ApplicationAdapter = DS.RESTAdapter.extend({ 
    host: 'http://addressbook-api.herokuapp.com' 
}); 

Кроме того, вы не должны определить идентификатор на модели, он там по умолчанию

MovieTracker.Contact = DS.Model.extend({ 
    first: DS.attr('string'), 
    last: DS.attr('string'), 
    avatar: DS.attr('string') 
}); 

http://emberjs.jsbin.com/OxIDiVU/172/edit

И новые версии данных Ember не документированы на сайте но переходный документ должен помочь объяснить некоторые нюансы и изменения.

https://github.com/emberjs/data/blob/master/TRANSITION.md

+0

Большое вам спасибо! Это определенно решило мою проблему !!! Спасибо за Gogu и Deewendra за ваши усилия! – TechWisdom

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