无法从组件访问控制器分配的模型

马文·奥斯瓦尔德(MarvinOßwald)

尝试从我的组件访问由路由的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'));
  }
});
Jmurphyau

我建议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/或isFulfilledproperty上设置一个观察者,然后在那里做一些工作。诺言得到解决后,它们就会更新。

import Ember from "ember";

export default Ember.Component.extend({

  ...

  setEvents:function (){
    console.log(this.get("theEvents"));
  }.observes("theEvents.content", "theEvents.isFulfulled")

  ...

});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章