我在同时学习ember.js和ember-cli方面遇到了很多困难,主要是试图将ember.js帮助文档中的内容翻译成ember-cli环境。我一直在试图弄清楚如何将动态细分与“#id;”之外的字段一起使用。
在Emberjs.com它给出了一个使用jQuery.getJSON和序列化函数的例子,但我不知道
1)如何从ember-cli引用jquery(如果我甚至需要按照上面链接所说的方式进行),并且
2)似乎无论我尝试什么,我都会得到错误"无法调用方法获取' undefined'"在我的序列化函数
我目前正在使用transitionToRoute
,因为我尝试从按钮转换而不是link-to
帮助(更好的推荐非常受欢迎)。
这是我的按钮使用的操作(它在控制器中):
actions: {
viewDetails: function() {
this.transitionToRoute('project-details', this.get('projectName'));
}
}
如果我的路线是:
this.resource('project-details', {path: '/project/:project_projectName'});
然后Ember文档会建议我在项目详细信息路径中需要这个,但我还没有让序列化器的任何排列工作,所以我确定我在做什么有些不对劲,但我不知道是什么。
model: function(params) {
//I've tried all kinds of things in here, not sure if I need getJSON
// since right now I'm just using fixture data
//If I do need jQuery, not sure how to use it in ember-cli (i.e. the import statement to use)
return jQuery.getJSON('/project/' + params.project_projectName);
},
serialize: function(model) {
return { project_projectName: model.get('projectName') };
}
编辑:添加模型
var Project = DS.Model.extend({
creationDate: attr('date'),
lastModifiedDate: attr('date'),
lastModifiedResourceId: attr('string'),
ppmcNumber: attr('number'),
ppmcUrl: attr('string'),
phase: attr('string'),
staffingProfile: attr('string'),
projectType: attr('string'),
projectDesc: attr('string'),
product: attr('string'),
clientId: attr('string'),
clientName: attr('string'),
overallStatus: attr('string'),
liveDate: attr('date'),
rygStatus: function(){
return 'status-' + this.get('overallStatus').toLowerCase();
}.property('overallStatus')
});
答案 0 :(得分:1)
你需要使用Ember.get,因为你的对象不是Ember对象(通过将对象包装在Ember.Object.create({})
中可以很容易地纠正,但getter和setter只适用于Ember对象)< / p>
serialize: function(model) {
return { project_projectName: Em.get(model, 'projectName') };
}