Ember 访问控制器内的模型
Ember access model inside a controller
如何从控制器中访问模型?当前使用下面的代码 returns a "undefined is not a function"(去图 JS 失败...)。
models/plan.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
period: DS.attr('number'),
price: DS.attr('number'),
});
routes/checkout.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params) {
return this.store.find('plan', params.plan_id);
}
});
controllers/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'});
});
我终于弄明白了。 plan = this.get('model')
适用于操作。它 returns 模型,可以使用 plan.get('price')
访问属性。不理想,但它完成了工作。为什么它不起作用是因为它在一个函数内,该函数被调用为动作内部的回调。所以可能 "this" 的范围也没有执行到回调函数。我将回调函数作为内部函数移动到操作中,然后 "this" 范围起作用了。
关于作用域问题,这里有解决方法setting an application controller variable to results returned from AJAX call
如何从控制器中访问模型?当前使用下面的代码 returns a "undefined is not a function"(去图 JS 失败...)。
models/plan.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
period: DS.attr('number'),
price: DS.attr('number'),
});
routes/checkout.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params) {
return this.store.find('plan', params.plan_id);
}
});
controllers/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'});
});
我终于弄明白了。 plan = this.get('model')
适用于操作。它 returns 模型,可以使用 plan.get('price')
访问属性。不理想,但它完成了工作。为什么它不起作用是因为它在一个函数内,该函数被调用为动作内部的回调。所以可能 "this" 的范围也没有执行到回调函数。我将回调函数作为内部函数移动到操作中,然后 "this" 范围起作用了。
关于作用域问题,这里有解决方法setting an application controller variable to results returned from AJAX call