尝试从我的组件访问由路由的setupController分配的模型。但是我的console.log()
日志唯一的事情是一个空的对象,里面还有3个与余烬相关的对象,似乎无法解决,但Ember Inspector说我的所有诺言都兑现了。{{#each event in events}}
我在main.hbs中有一个工作正常。
full-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'));
}
});
我建议model
在您的路线中使用挂钩。
Ember所做的是,当遇到model
钩子并返回承诺时,它会一直等到兑现承诺后再继续执行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);
}
});
您还可以在promise和content
/或isFulfilled
property上设置一个观察者,然后在那里做一些工作。诺言得到解决后,它们就会更新。
import Ember from "ember";
export default Ember.Component.extend({
...
setEvents:function (){
console.log(this.get("theEvents"));
}.observes("theEvents.content", "theEvents.isFulfulled")
...
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句