我整天都在努力解决这个问题,我觉得我已经接近解决方案,但无法完全实现。我将 Ember.js 与 Ember-Data 和 Fixtures 适配器一起使用,最终迁移到 REST 适配器。基本问题是:我有站点和主管,具有多对多的关系。我想向用户展示他们现有的站点/主管配对的选择框,按站点排序,即:
- 站点 1 - 主管 1
- 站点 1 - 主管 2
- 站点 2 - 主管 1 (记住,多对多)
- 站点 2 - 主管 3
我需要将这两个资源整理成一个数组,我可以将它传递给从 Ember.Select 继承(或将继承)的视图。目前我正在尝试使用 Supervisors 控制器上的一个方法,我称之为“flat”,因为它将返回一个表示这些关系的扁平数组。控制器如下图所示。我正在使用 .find().then() 来处理承诺后的数据。我取回的数据出现包含我的所有四个固定装置,但是当我在它们上尝试任何可枚举方法(特别是 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
}) ;
}
}) ;
这是第一个 console.log() 调用的日志输出
0: Object
1: Object
2: Object
3: Object
__ember1376005434256: "ember325"
__ember1376005434256_meta: Meta
_super: undefined
length: 4
__proto__: Array[0]
你能告诉我我在这里缺少什么吗?我不知道如何访问四个由此产生的主管。
谢谢!