我需要等待我的应用中加载了记录,但这不起作用:
var sectors = this.get('store').find('sector');
sectors.on('didLoad', function() {
console.log("loaded: " + this.get('formLoaded'));
});
它表示“对象[对象对象]在''上没有方法', 我做错了什么?
更新: 根据斩波器的建议,我得到一个新的错误,因为我使用它来从服务器获取数据以填充选择视图:
我有一个像这样的控制器:App.FormController = Em.Controller.extend({
sectors: function() {
var sectors = this.get('store').find('sector');
return sectors;
}.property(),
accesslevels: function() {
var accesslevels = this.get('store').find('accesslevel');
return accesslevels;
}.property(),
equipments: function() {
var equipments = this.get('store').find('equipment');
return equipments;
}.property(),
difficulties: function() {
var difficulties = this.get('store').find('difficulty');
return difficulties;
}.property()
});
在模板中我有:
sectors: {{view Ember.Select id="settore" contentBinding="sectors" optionValuePath="content.id" optionLabelPath="content.descrizione"}}
access levels: {{view Ember.Select id="liv_acc" contentBinding="accesslevels" optionValuePath="content.id" optionLabelPath="content.descrizione"}}
等等; 这有时是有效的,有时也不会,因为我必须等待所有来自所有find()的记录在渲染视图之前加载;我按照上面的说法尝试了“on('didLoad')”跟随Ember doc,但是没有用;能帮我找到原因吗?
答案 0 :(得分:1)
使用find
/ findAll
返回的promise:
var sectors = this.get('store').findAll('sector').then( function(data) {
console.log("loaded: " + data);
});
答案 1 :(得分:0)
根据您的建议和其他答案,我最终决定使用此解决方案来加载多模型(在路由器处理程序中使用模型钩子):
model: function(params) {
return Em.RSVP.hash({
settori: this.get('store').findAll('sector'),
attrezzature: this.get('store').findAll('equipment'),
difficolta: this.get('store').findAll('difficulty'),
livelliaccesso: this.get('store').findAll('accesslevel'),
sino: [{id: 0, descrizione: "No"}, {id: 1, descrizione: "Sì"}]
});
},
setupController: function(controller, model) {
controller.setProperties(model);
}
RSVP应确保在呈现视图之前完全加载所有promise;
无论如何我面临一个奇怪的问题:有时我会收到这个错误:
Error while loading route: Error: Assertion Failed: The response from a findAll must be an Array, not undefined
这对我来说似乎是不可预知的:有时会发生,然后很多次都没有;我认为这是我第一次加载App时发生的事情; 在文档中写道,这可能与模型中的“hasMany”或“belongsTo”关系有关,但我的模型中没有这些;
我正在使用yeoman在本地开发App,并且基于节点js的restful服务器(使用express)提供从mysql加载的数据(easyphp正在运行mysql服务器)
有人知道什么是错的吗?