控制器内的Ember访问模型

时间:2015-01-20 14:59:55

标签: ember.js ember-data

如何从控制器中访问模型?目前使用以下代码返回" undefined不是函数" (去图JS失败......)。

模型/ plan.js

import DS from 'ember-data';

export default DS.Model.extend({
    name:       DS.attr('string'),
    period:     DS.attr('number'),
    price:      DS.attr('number'),
});

路由/ checkout.js

import Ember from 'ember';

export default Ember.Route.extend({

    model: function(params) {
        return this.store.find('plan', params.plan_id);
    }
});

控制器/ checkout.js

import Ember from 'ember';

export default Ember.Controller.extend({

    submitPayment: function(error, result)
    {
          var plan = this.get('model');
    }
}

router.js

Router.map(function() {
  this.route('checkout', {path: '/checkout/:plan_id'});
});

1 个答案:

答案 0 :(得分:11)

我最终弄明白了。 plan = this.get('model')适用于此操作。它返回模型,可以使用plan.get('price')访问属性。不理想,但它完成了工作。它为什么不起作用是因为它位于一个函数内部,该函数被称为动作内部的回调。所以可能是"这个"的范围。也没有执行回调函数。我将回调函数作为内部函数移动到了操作中,然后"这个"范围有效。

至于范围问题,这里是解决方案setting an application controller variable to results returned from AJAX call