我有一个组件从我的控制器获取一些当前的灯具数据,如此
{{vertical-graph metrics=controller.total_sessions_comparison}}
控制器属性如下所示
total_sessions_comparison: [
[
{
metricNumber: "26%",
metricText: "September",
metricStyle: "height: 26%"
},
{
metricNumber: "22%",
metricText: "October",
metricStyle: "height: 22%"
},
],
[
{
metricNumber: "74%",
metricText: "September",
metricStyle: "height: 74%"
},
{
metricNumber: "78%",
metricText: "October",
metricStyle: "height: 78%"
}
]
],
我的路由器中的模型钩子正在加载来自这样的自定义api的数据
return Ember.$.getJSON('http://127.0.0.1:3000/api');
目前我的API正在返回看起来像这样的JSON
{
"total_sessions": 288,
"current_month": "May",
"current_month_year": "2015",
"last_month": "December",
"last_month_year": "2014"
}
我可以很好地访问模板中的模型数据(这些都在索引下)但我在理解如何在控制器属性中获取月份名称时遇到一些问题,而不是硬编码它们使用的那些通过API动态传递。模型属性看起来像current_month
和last_month
,就像我说模板中的工作一样,但我不能让它们在控制器中工作。
或者是否有更好的方法可以做到这一点,而不是我现在的那样会让这更容易?
答案 0 :(得分:1)
好的,默认情况下,路由中model
挂钩返回的内容被设置为相应控制器上的model
属性。这是通过内置的setupController(controller, model)
钩子完成的。如果要在控制器上设置更多属性或需要更精细的控制,请随意覆盖setupController。例如,您的json被解析为一个对象,该对象在promise解析时被设置为模型。要将控制器上的current_month
变量设置为此值,您可以:
setupController: function(controller, model){
controller.set('current_month', model.current_month);
}
您不再需要设置模型,除非您在被覆盖的this._super(controller, model)
内setupController
(如果需要)。