Я новичок в ember.js и Эмбер-кли и имею это довольно основную проблему не будучи в состоянии принести определенное значение модели в моем ArrayController и манипулировать его здесь. Я прочитал несколько раз через ember.js документ о настройке контроллера и отображении моделейКак получить значения Ember-Data в ArrayController с использованием Ember-CLI?
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 embermagically, поэтому я могу получить его через model.nts? Прямо сейчас, мое приложение ember будет строить, но последовательность var , которая установлена в функции типаSeq, остается неопределенной.
Было бы здорово услышать ответы от вас или получить ссылку на хороший учебник по этой теме!
Правильно ли я вижу, что это создаст массив длины, содержащий длину всех строк * nts * объекта контента? Как я получу, например, первый из этих поздних месяцев? Используя * this.get ('len', 1) * или что-то вроде * tthis.len [0] * внутри моей функции * typeSeq() *? – jessica
У меня был второй взгляд и я понял, как получить значение * length *: поскольку ваше решение выполняет итерацию по каждому элементу в контенте в цикле * forEach *, каждая строка * nts * извлекается, а ее значение * length * просто добавляется к более раннее значение * length *. Поправьте меня, если я ошибаюсь. Я также реализовал это аналогично для своего свойства * seqData *, потому что у меня были проблемы с получением этих данных и раньше. Теперь это работает! – jessica
изменил его на массив в моем примере вместо добавления длины каждой строки, вы можете получить доступ к первому элементу позже, используя this.get ('len') [0]; – flylib