【发布时间】:2014-02-25 07:18:40
【问题描述】:
我试图在其各自的控制器中访问我的模型的内容,但它最初返回一个带有未定义属性的承诺,然后在第二次或第三次访问时返回该值。
会不会是从 REST 适配器检索数据有延迟?
同时尝试在控制器中的请求上使用 '.then()' 也不起作用,因为我相信它只能在路由中使用。
App.EquipmentsController = Ember.ArrayController.extend({
getContentForMapping: function() {
console.log(this.get('model').objectAt(1).get('contractor.name'));
//returns undefined first time
}
});
奇怪的是,当我从模板视图循环访问模型的属性时,它会立即返回它们。
{{#each equipment in model}}
<p>{{equipment.contractor.name}}</p>
{{/each}}
以下是我设置路线的方式。它正在获取与特定站点相关的设备列表:
App.EquipmentsRoute = Ember.Route.extend({
model: function(){
//Get the model for the selected site and grab its equipment list.
return this.modelFor('site').get('equipment');
},
//Set the model we just grabbed above as the model to use in the controller
setupController: function(controller, model) {
controller.set('model', model);
}
});
【问题讨论】:
-
我认为您不需要 setupController。这是默认实现。 setupController: function(controller, model) { controller.set('model', model); }
-
如何调用 getContentForMapping?似乎这可能是一个时间问题,并且您在承诺解决之前调用了该函数。模板将等到promise 解决后才能呈现每个。你能发送一个 jsbin 来重现这个问题吗?
-
嘿 Miguel,getContentForMapping 是通过更新字段来调用的。我尝试使用fixure适配器通过jsbin重现它,但问题似乎没有复制,这让我相信它与REST适配器相关。
标签: javascript ember.js