2014-10-22 3 views
0

Поскольку я углубляюсь в EmberJS, я попал в этот контекст, где мне нужно использовать HTTP-запрос. В начале я попытался получить данные JSON, поэтому я сделал тестовую страницу, которая возвращает JSON, и я также проверил, что он находится в JSON, десериализуя его. Ошибок не обнаружено, но выхода нет. Ниже приведены подробные сведения о моем кодеИзвлечение данных с использованием Ember

application.js

App = Ember.Application.create({}); 

    App.ApplicationAdapter = DS.RESTAdapter.extend({ 
     host: 'http://172.19.20.30/EmberTest/testApi.aspx' 
    }); 

event.js

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

router.js

App.Router.map(function() { 
     this.resource('events', {path: '/'}); 
    }); 

    App.EventsRouter = Ember.Route.extend({ 
     model: function() { 
      return App.Event.find(); 
     } 
    }); 

JSON выход из хоста

{ "events": [{ "id": 1, "title": "test title", "body": "test body" },{ "id": 2, "title": "another title", "body": "another body" }] } 

HTML

<script type="text/x-handlebars" data-template-name="events"> 
    this is an example 
    {{#each e in model}} 
     <label>{{e.title}}</label><br /> 
    {{/each}} 
</script> 

что могло не быть в моем коде? комментарии, мнения, предложения высоко оценили

+0

Я действительно новичок в Эмбер, поэтому я только предположение. В моем приложении я использую атрибут «data-template-name» для шаблонов представлений. Попытайтесь заменить это на id = "events". – lukkysam

+0

исправил мою проблему! это было имя роутера .. почему я этого не увидел -_- –

ответ

0

Похоже возвращение JSON это неправильно .. он должен быть особым:

{ "event": [{ "id": 1, "title": "test title", "body": "test body" },{ "id": 2, "title": "another title", "body": "another body" }] }

Когда вы находку с Ember данных он должен иметь название модели:

this.store.find('event') So Ember-data знает, к какой карте возврата.

Это будет генерировать URL http://host:port/event

Если вы изменяете host это должно быть просто базовый URL вы меняете и не абсолютна. Так что в вашем случае:

App.ApplicationAdapter = DS.RESTAdapter.extend({ 
    host: 'http://172.19.20.30/EmberTest' 
}); 

Тогда URL будет http://172.19.20.30/EmberTest/events

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