在Ember.js Ember数据记录数组上迭代
Iterating over Ember.js ember-data Record Arrays
我一整天都在为这个问题绞尽脑汁,我觉得我已经接近解决方案了,但就是无法实现。我将Ember.js与EmberData和Fixtures适配器一起使用,最终迁移到REST适配器。基本问题是:我有站点和主管,有多对多关系。我想向用户展示一个选择框,用于他们现有的站点/主管配对,按站点排序,即:
- 现场1-主管1
- 现场1-监督员2
- 站点2-主管1(记住,多对多)
- 现场2-监督员3
我需要将这两个资源合并为一个数组,我可以将其传递给继承(或将继承)Ember.Select的视图。目前,我正在Supervisors控制器上尝试使用一个方法,我称之为"平面",因为它将返回一个表示这些关系的平面数组。控制器如下所示。我使用.find().then()来处理承诺完成后的数据。我返回的数据显示为包含我的所有四个fixture,但当我在它们上尝试任何可枚举方法(尤其是forEach)时,它的行为就像只返回了第一个对象。我已经尝试过迭代数据对象以及data.get('content')。我对Ember很陌生,所以也许我无论如何都错了,但不管怎样,这对我来说似乎很奇怪。下面是我的代码:
App.SupervisorsController = Ember.ArrayController.extend({
flat: function(){
return App.Supervisor.find().then(function(data){
var c = data.get('content') ;
console.log(c) ; // <-- logs an object containing four records,
// with attribute "length" showing 4
// Great! (see below for log output)
console.log(c[0]) ; // <-- logs first record. Great!
console.log(c[1]) ; // <-- undefined (?!)
console.log(c[2]) ; // <-- undefined (?!)
console.log(c[3]) ; // <-- undefined (?!)
console.log(c.get('length')) ; // <-- 1 (not four?!)
return c ; // <-- eventually this will return the newly constructed array
}) ;
}
}) ;
下面是第一个控制台的日志输出。log()调用
0: Object
1: Object
2: Object
3: Object
__ember1376005434256: "ember325"
__ember1376005434256_meta: Meta
_super: undefined
length: 4
__proto__: Array[0]
你能告诉我我在这里缺了什么吗?我不知道如何访问由此产生的四位主管中的每一位。
谢谢!
在模型加载完成之前,您似乎正在访问它们(您可以在属性isUpdating中看到这一点)。如果你想懒洋洋地看这个,你可以稍后使用ember run来稍后查看项目。或者,您可以在控制器上设置模型并渲染它,并在模型加载完成时让ember更新视图。。。
Ember.run.later(function(){
data.forEach(function(item){
console.log(item);
});
}, 2000);
App.ApplicationRoute = Ember.Route.extend({
activate: function(){
this.controllerFor('supervisors').set("model", App.Supervisor.find());
}
});
http://jsbin.com/ijiqeq/12/edit
祝Ember好运!
someArray: function(){
var arr = Ember.A();
this.get('model').forEach(function(item){
item.get('sites').forEach(function(site){
arr.pushObject(someObject); //some object that is represents each specific combination
});
});
}.property('model')
相关文章:
- 如何在javascript中迭代数字列表
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 如何迭代Array.prototype函数
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 在ejs-partial中对JSON对象进行迭代
- 如何在DataTables 2.1中迭代对象数组
- 使用递归属性迭代保留属性结构
- 正在停止.在jquery中的特定时间间隔内,每次迭代的每次执行
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 主干-从模板中迭代的集合中获取特定的模型
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 什么's是在javascript中迭代项的最佳方式
- 为什么这只是迭代 HTMLCollection 的奇怪元素
- 是否“;对于的“;循环迭代遵循JavaScript中的数组顺序
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- 在模板中的Ember.js对象上发出迭代
- 在Ember.js Ember数据记录数组上迭代
- Ember组件和动态属性的迭代
- 迭代Ember.js中的hasMany / belongsTo关系
- Ember.js / Ember-i18n:是否可以从 Handlebars 模板中迭代翻译文件中的属性