如何使用 Ember-CLI 在 ArrayController 中获取 Ember-Data 值
How do I fetch Ember-Data Values in an ArrayController using Ember-CLI?
我是Ember.js和Ember-cli的新手,并且有一个相当基本的问题,无法在我的ArrayController中获取特定的模型值并在此处进行操作。我多次阅读了关于控制器设置和模型显示的 ember.js 文档
http://emberjs.com/guides/controllers/representing-multiple-models-with-arraycontroller/
但还没有找到解决我的情况的方法。
以下是我的路由、控制器和模型文件:
// /routes/sequences.js
import Ember from 'ember';
var SequencesRoute = Ember.Route.extend({
model: function() {
return this.store.find('sequences');
},
setupController: function(controller, model) {
this._super(controller, model);
}
});
export default SequencesRoute;
// /controllers/sequences.js
import Ember from 'ember';
var SequencesController = Ember.ArrayController.extend({
init: function() {
this._super();
this.typeSeq();
},
i: 0,
seqData: function(){
var seq = this.get('model.nts');
return seq;
}.property('model.nts'),
len: function(){
var slen = this.get('seqData');
return slen.length;
}.property('seqData'),
typeSeq: function() {
var tthis = this;
var sequence = this.get('seqData');
var lenn = this.get('len');
if (tthis.i <= lenn){
console.log(tthis.i);
console.log(sequence.substring(tthis.i,tthis.i+1));
tthis.i++;
Ember.run.later(function(){
tthis.typeSeq();
}, 200
);
}
else{
return false;
}
}
});
export default SequencesController;
// /models/sequences.js
import DS from 'ember-data';
var Genes = DS.Model.extend({
geneName: DS.attr('string'),
nts: DS.attr('string')
});
Genes.reopenClass({
FIXTURES: [
{
id: 1,
geneName: "Monoamine Oxidase A",
nts: "CTGCAGCGAGCGCGGGAAGCGGGACAGGGCCTAGAGTCACTTCTCCCCGCCCCTGACTGGCCCG"
},
{
id: 2,
geneName: "Monoamine Oxidase B",
nts: "TTTCTGCAGCGAGCGCGGGAAGCGGGACAGGGCCTAGAGTCACTTCTCCCCGC"
}
]
});
export default Genes;
特别是在我的控制器中设置 seqData 的属性对我来说不清楚。究竟必须调用什么才能将我的模型数据放入属性中?我的路由器中的 setupController 方法是否会在我的 ArrayController 中设置一个模型属性,以便我可以通过 model.nts 获取它?现在,我的余烬应用程序将构建,但在 typeSeq 函数中设置的 var 序列仍未定义。
很高兴听到您的一些答案或获取有关此主题的精彩教程的链接!
1)我相信序列应该是单数的,但也许另一种方式有效?
return this.store.find('sequence');
而不是
return this.store.find('sequences');
2)无需做所有init/seqData的事情,数组控制器的内容属性将自动设置为从路由模型钩子中this.store.find('sequence');
,你可以这样做
len: function(){
var length = [];
this.get('content').forEach(function(item) {
length.push(item.get('nts').length);
});
return length;
}.property('content'),
相关文章:
- Ember Data DS.Model's set函数不起作用
- 获取ember JS中的当前URL
- Ember.js 和 ember-data 与外部(另一个域)API 配合使用
- 无法获取带有 .data(el,'dataname').sublev 的数据对象
- Ember-Data: Restful Put
- 如何获取 Ember 组件对象内部承诺成功或错误回调
- 获取 Ember .js 中的路由列表
- Ember-data 解析了错误的 API 端点
- 如何使用 Ember-CLI 在 ArrayController 中获取 Ember-Data 值
- 使用 Ember Data 检索 json 文件
- ember-data - store.find('model') 总是查询服务器
- Ember Data 1.0 加载路由时出错:类型错误:无法设置未定义的属性“类型键”
- Ember Data with Websockets
- Ember data EmbeddedRecordMixin
- Ember Data Beta 2 - Serializer/Deserializer for FixtureAdapt
- Ember Data 1.0 - 如何在数据加载时触发模型上的观察器
- ESO夹具适配器 - 如何在Ember Data 1.0 beta 2中修复适配器而没有数据错误
- Ember Data ajax call
- Ember-Data objectAt()获取第一个结果不起作用
- Ember在Ember -data 1.13.8中获取相关记录