[英]Ember.js Error: No model was found for 'id' while saving record using ember-data
[英]Iterating over Ember.js ember-data Record Arrays
我整天都在反对这个问题,我觉得我已接近解决方案,但却无法实现。 我正在使用Ember.js和Ember-Data以及Fixtures适配器,最终迁移到REST适配器。 基本问题是:我有网站和主管,有多对多的关系。 我想向用户显示他们现有站点/主管配对的选择框,按站点排序,即:
我需要将这两个资源争用到一个数组中,我可以将其传递给从Ember.Select继承(或将继承)的视图。 目前我正在尝试使用Supervisors控制器上的一个方法,我称之为“平坦”,因为它将返回一个表示这些关系的扁平数组。 控制器如下所示。 我正在使用.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]
你能告诉我我在这里失踪了吗? 我无法弄清楚如何访问四个结果主管中的每一个。
谢谢!
看起来您在完成加载之前访问模型(您可以在属性中看到这个,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
祝恩伯恩好运!
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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.