Bog*_*rac 9 ember.js ember-data
如何从控制器中访问模型?目前使用下面的代码返回"undefined is not a function"(如图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'),
});
Run Code Online (Sandbox Code Playgroud)
路线/ checkout.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params) {
return this.store.find('plan', params.plan_id);
}
});
Run Code Online (Sandbox Code Playgroud)
控制器/ checkout.js
import Ember from 'ember';
export default Ember.Controller.extend({
submitPayment: function(error, result)
{
var plan = this.get('model');
}
}
Run Code Online (Sandbox Code Playgroud)
router.js
Router.map(function() {
this.route('checkout', {path: '/checkout/:plan_id'});
});
Run Code Online (Sandbox Code Playgroud)
Bog*_*rac 11
我终于明白了.plan = this.get('model')适合行动.它返回模型,可以访问属性plan.get('price').不理想,但它完成了工作.它为什么不起作用是因为它位于一个函数内部,该函数被称为动作内部的回调.因此,"this"的范围可能也不会对回调函数执行.我将回调函数作为内部函数移动到操作中,然后"this"范围起作用.
至于范围问题,这里是将应用程序控制器变量设置为从AJAX调用返回的结果的解决方案