如何从控制器中访问模型?目前使用以下代码返回" 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'});
});
答案 0 :(得分:11)
我最终弄明白了。 plan = this.get('model')
适用于此操作。它返回模型,可以使用plan.get('price')
访问属性。不理想,但它完成了工作。它为什么不起作用是因为它位于一个函数内部,该函数被称为动作内部的回调。所以可能是"这个"的范围。也没有执行回调函数。我将回调函数作为内部函数移动到了操作中,然后"这个"范围有效。
至于范围问题,这里是解决方案setting an application controller variable to results returned from AJAX call