model在控制器上返回null

时间:2014-06-02 03:02:20

标签: ember.js ember-data

我正在使用路由器和控制器,我需要在控制器上完成一些操作,这是我的模型代码

AcornsTest.StockRoute = Ember.Route.extend({
  model: function(params) {
    "use strict";
    var url_params = params.slug.split('|'),
      url = AcornsTest.Config.quandl.URL + '/' + url_params[0] + '/' + url_params[1] + '.json',
      stockInStore = this.store.getById('stock', url_params[1]),
      today =  new Date(),
      yearAgo = new Date(),
      self = this;

    yearAgo.setFullYear(today.getFullYear() - 1);
    today = today.getFullYear()+'-'+today.getMonth()+'-'+today.getDate();
    yearAgo = yearAgo.getFullYear()+'-'+yearAgo.getMonth()+'-'+yearAgo.getDate();

    if(stockInStore && stockInStore.get('data').length) {
      return stockInStore;
    }

    return Ember.$.getJSON(url,{ trim_start: yearAgo, trim_end: today, auth_token: AcornsTest.Config.quandl.APIKEY })
      .then(function(data) {
        if(stockInStore) {
           return stockInStore.set('data', data.data);
        } else {
           return self.store.createRecord('stock', {
            id: data.code,
            source_code: data.source_code,
            code: data.code,
            name: data.name,
            description: data.description,
            display_url: data.display_url,
            source_name: data.source_name,
            data: data.data,
            slug: data.source_code+'|'+data.code
          });
        }
    });
  }
});

这是我的控制器

AcornsTest.StockController = Ember.ObjectController.extend({
  init: function() {
    "use strict";

    this.send('generateChartInfo');
  },

  actions: {
    generateChartInfo: function() {
      "use strict";

      console.log(this.model);
      console.log(this.get('model'));
    }
  }
});
来自控制器的

我试图访问模型以获取一些信息并对其进行格式化,并将其发送到视图 但是this.model或this.get(' model')总是返回null,我怎样才能成功从控制器访问模型?感谢

1 个答案:

答案 0 :(得分:1)

您正在覆盖init方法,但它已损坏,请执行此操作:

AcornsTest.StockController = Ember.ObjectController.extend({
  init: function() {
    "use strict";
    this._super();

    this.send('generateChartInfo');
});

您需要调用父方法。

请参阅此测试用例:http://emberjs.jsbin.com/gijon/3/edit?js,console,output

该模型尚未准备好init时间。如果有人有官方文档,请分享。