尝试从我的组件访问路由的setupController分配的模型。但只有我的console.log()
日志是一个空对象,其中有3个其他与ember相关的对象,似乎未解决,但Ember Inspector表示我的所有Promise都已完成。我在main.hbs中的{{#each event in events}}
工作正常......
全calendar.js:
import Ember from "ember";
export default Ember.Component.extend({
attributeBindings: ['id'],
id: 'calendar',
setEvents:function (){
console.log(this.get("theEvents"));
}.observes("theEvents"),
_initializeCalendar: function() {
var self = this;
$("#calendar").fullCalendar({
lang: 'de',
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
weekends: false,
dayClick: function(date) {
self.sendAction("dayClick",date);
},
});
}.on('didInsertElement')
});
main.hbs:
{{full-calendar theEvents=events dayClick="dayClick"}}
main.js
import Ember from "ember";
export default Ember.Route.extend({
setupController:function(controller){
controller.set('events', this.store.find('event'));
}
});
答案 0 :(得分:1)
我建议您在路线中使用model
挂钩。
当Ember遇到model
挂钩并且返回一个promise时,它会等待,直到承诺完成,然后继续进入setupController
挂钩。您正在做的是提供尚未解决的承诺 - 因此在创建组件并执行didInsertElement
时,承诺尚未解决。
import Ember from "ember";
export default Ember.Route.extend({
model: function() {
return this.store.find('event');
},
setupController:function(controller, model) {
controller.set('events', model);
}
});
您还可以在承诺的content
和/或isFulfilled
属性中设置观察者,并在那里做一些工作。当承诺得到解决时,它们会得到更新。
import Ember from "ember";
export default Ember.Component.extend({
...
setEvents:function (){
console.log(this.get("theEvents"));
}.observes("theEvents.content", "theEvents.isFulfulled")
...
});