Json 在Ember中加载和使用枚举值
我有一个Ember应用程序使用基于rails的Web服务 在Rails方面,我有一些枚举,它们只是数组。 现在,我想在Ember应用程序中检索这些枚举,并为选择值呈现它们 Web服务返回一个JSON响应:Json 在Ember中加载和使用枚举值,json,ember.js,enums,Json,Ember.js,Enums,我有一个Ember应用程序使用基于rails的Web服务 在Rails方面,我有一些枚举,它们只是数组。 现在,我想在Ember应用程序中检索这些枚举,并为选择值呈现它们 Web服务返回一个JSON响应: get'/grades.json' {“等级”:[“cp”、“ce1”、“ce2”、“cm1”、“cm2”]} 在余烬一侧,我创建了一条如下的等级路线: App.GradesRoute = Ember.Route.extend({ model: function () {
get'/grades.json'
{“等级”:[“cp”、“ce1”、“ce2”、“cm1”、“cm2”]}
在余烬一侧,我创建了一条如下的等级路线:
App.GradesRoute = Ember.Route.extend({
model: function () {
return Em.$.getJSON('api/v1/grades.json')
}
}));
然后,我想在使用这些枚举的控制器中需要它:
App.StudentsController = Ember.ArrayController.extend({
needs: ['grades'],
grades: Ember.computed.alias('controllers.grades')
}
));
因此,至少我认为我可以在学生
模板中重复评分
{{#each grade in grades}}
{{grade}}
{{/each}}
但我没有得到任何输出。。。从模板调试并尝试templateContext.get('grades')。get('model')返回空数组[]
你知道我如何加载和访问这些数据吗?你只是把一些路径弄混了。在
StudentsController
中,控制器。等级
指的是实际控制器,而不是其型号。下面的代码应该会把事情弄清楚,因为它在命名方面更加明确
App.StudentsController = Ember.ArrayController.extend({
needs: ['grades'],
gradesController: Ember.computed.alias('controllers.grades'),
grades: Ember.computed.alias('gradesController.model.grades')
});
此外,请注意,只有当您的
成绩
路线是您的学生
路线的直接家长时,才可以使用需求
。如果它不是直接的父对象,您将无法获取所需的数据。因此我最终选择了ApplicationRoute,它是StudentsRoute的直接父对象,因此在这种情况下,需要是相关的
App.ApplicationRoute = Ember.Route.extend({
setupController: function(controller) {
Em.$.getJSON('api/v1/enums.json').then(function(data){
controller.set('grades', data['grades']);
controller.set('states', data['states']);
}
}
});
现在,我可以为我需要在我的应用程序中使用的每个枚举创建一个别名
App.StudentsController = Ember.ArrayController.extend({
needs: ['application'],
grades: Ember.computed.alias('controllers.application.grades'),
states: Ember.computed.alias('controllers.application.states')
});
我仍然没有足够的信心来确定这是一条路,欢迎任何建议 多谢各位。尽管如此,由于分数应该是其他模型之间的共享资源,我认为我走错了路。将成绩路线设置为学生的家长是没有意义的。我将尝试使用应用程序控制器来控制分数。你在这里切换到咖啡脚本让人困惑。您可能需要更新问题(或此问题)以匹配语法。抱歉,我的懒惰。。。我最初使用Emberscript进行这个项目,但后来又回到了javascript,原因之一是在这里这样的地方更容易分享和讨论。那么,编辑完成了。