首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代Ember.js成员-数据记录数组

迭代Ember.js成员-数据记录数组
EN

Stack Overflow用户
提问于 2013-08-09 00:23:40
回答 1查看 19.3K关注 0票数 8

我一整天都在努力解决这个问题,我觉得我已经接近解决方案了,只是无法实现。我正在使用Ember.js与Ember数据和固定设备适配器,最终迁移到REST适配器。基本的问题是:我有网站和管理者,与多到多关系.我希望向用户提供其现有站点/主管配对的选择框,按站点排序,即:

  • 工地1-主管1
  • 工地1-主管2
  • 站点2-主管1(记住,多到多)
  • 工地2-主管3

我需要将这两个资源转换成一个数组,然后将其传递给一个从Ember.Select继承(或将继承)的视图。目前,我正在使用一个我称之为“平面”的Supervisors控制器上的方法来尝试这个方法,因为它将返回一个表示这些关系的扁平数组。控制器如下所示。我正在使用.find().then()来处理承诺完成后的数据。返回的数据似乎包含了我所有的四个固定装置,但是当我尝试它们上的任何可枚举方法(特别是forEach)时,它的行为就好像它只返回了第一个对象一样。我已经尝试过迭代数据对象以及data.get('content')。我对安博很陌生,所以也许我做错了,但不管怎么说,这对我来说似乎很奇怪。这是我的密码:

代码语言:javascript
复制
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()调用的日志输出

代码语言:javascript
复制
0: Object
1: Object
2: Object
3: Object
__ember1376005434256: "ember325"
__ember1376005434256_meta: Meta
_super: undefined
length: 4
__proto__: Array[0]

你能告诉我我在这里错过了什么吗?我想不出怎么才能找到四个主管中的每个人。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-09 01:06:53

在模型完成加载之前,您似乎正在访问它们(您可以在属性isUpdating中看到这一点)。如果你觉得懒洋洋的看着这一点,你可以使用烬运行后,只是看到项目稍晚一点。或者,您可以在控制器上设置模型并呈现它,并让成员在模型完成加载后更新视图。

代码语言:javascript
复制
 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

祝你安博好运!

代码语言:javascript
复制
 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')
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18138383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档