2014-09-05 33 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]] 

我想用我的余烬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不仅返回数组与数据的数组,但也是其他特定于对象的对象,是这个问题吗?如果是的话,如何访问只有JSON返回的数据,所以我可以在控制器中使用它?

+1

不应该是'this.get('model')'在你的第二个控制器片段?而不是'this.model'? – MilkyWayJoe 2014-09-05 19:37:42

+0

我已经开始使用“this.get('model')”,但它与iam得到“未捕获类型错误:未定义不是函数” – klonodo 2014-09-05 19:41:14

+0

您可以显示'console.log(this.model)'输出? – 2014-09-05 19:43:39

回答

0

承诺成功后,您可以直接在路由器本身格式化数据。

当控制器被初始化时,这个方法也会运行一次并且会初始化。 要从控制器本身设置数据,请在json许诺成功后格式化数据。 例如:

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

我已经做了你发布的内容(将控制器的所有内容从控制器移动到模型和使用数据),然后我在控制器“系列:function(){this.get('model')}。on('init') “但是它仍然和以前一样,没有任何数据的空图表 – klonodo 2014-09-05 20:31:44

+0

你现在不需要做任何这样的操作,this.model会以你需要的格式将数据从路由器返回给控制器。您可以直接在模板中使用该数据进行检查。看到我上面的答案。 “ – 2014-09-05 20:33:45

+0

与”系列:完全一样“。模型“,也许我会在jsbin中做到这一点,所以你可以更清楚地看到它 – klonodo 2014-09-05 20:35:31