2014-09-05 2 views
0

Мне нужно получить данные JSON от модели, я использовал «this.model» в контроллере. Из того, что я вижу в консольном журнале, «this.model» возвращает массив массивов данных.Ember.js, HighCharts - доступ к данным JSON от контроллера

App.CardsRoute = Ember.Route.extend({ 
model: function() { 
return Ember.$.getJSON('/cards'); 
} 
}); 

Это то, что сервер на пути/картах возвращающихся:

[[1317888000000,372.5101],[1317888060000,372.4]] 

Я хочу использовать эти данные в моей Ember HighStock (от Highcharts) реализации. Он рисует график с этим вручную введенных данных:

App.CardsController = Ember.ArrayController.extend({ 
    series: [{ 
      name : 'test', 
       type: 'area', 
       data :[[1317888000000,372.5101],[1317888060000,372.4]], 

...

Но не рисовать с этим:

App.CardsController = Ember.ArrayController.extend({ 
series: [{ 
       name : 'test', 
       type: 'area', 
       data : this.model, 
... 

Из того, что я вижу в консоли, this.model возвращается не только массив с массивами данных, но другие специальные объекты ember тоже, это проблема? если да, то как получить доступ только к возвращенным данным JSON, чтобы я мог использовать его в контроллере?

+1

не должно быть 'this.get ('model')' в вашем втором фрагменте контроллера? в отличие от 'this.model'? – MilkyWayJoe

+0

Я начал с «this.get ('model')», но с ним iam получает «Ошибка типа Uncaught: Undefined не является функцией» – klonodo

+0

Можете ли вы показать вывод для 'console.log (this.model)'? – 2014-09-05 19:43:39

ответ

0

Вы можете напрямую форматировать данные в своем маршрутизаторе, после того как обещание будет успешным.

Когда инициализируется контроллер, этот метод также будет запускаться один раз и будет выполняться. Чтобы настроить данные с самого контроллера, отформатируйте данные после успешного выполнения json-обещания. Ex:

App.CardsRoute = Ember.Route.extend({ 
    model: function() { 
    return Ember.$.getJSON('/cards'); 
    }.then(function(data){ 
    return [{ 
      name : 'test', 
      type: 'area', 
      data : data, 
      ... 
     }] 
}); 

После этого в контроллере это сделать

Код наклеивается в jsbin http://jsbin.com/vekacayirugu/16/edit

Этот вид форматирования будет работать для вас. ссылка: http://emberjs.com/guides/object-model/computed-properties-and-aggregate-data/

+0

Я сделал то, что вы разместили (перемещая все содержимое серии с контроллера на модель и используя данные), затем я сделал в контроллере «series: function() {this.get ('model')}. On ('init') «но он все тот же, что и раньше, пустая диаграмма без каких-либо данных – klonodo

+0

вам не нужно делать что-либо из этого сейчас, this.model предоставит данные в требуемом формате, который возвращается с маршрутизатора на контроллер. Вы можете напрямую использовать эти данные в своем шаблоне для проверки. См. Мой ответ выше. –

+0

точно так же, как и "серия: это.модель ", может быть, я сделаю это в jsbin? так что вы можете увидеть это более четко – klonodo

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