Ember - 将变量从路由传递到控制器
Ember - passing variable from route to controller
我在使用 EmberJS 时遇到了很大的麻烦。我正在使用 Ember.RSVP.hash 加载多个模型,如下所示:
路线:
model() {
const self = this;
return Ember.RSVP.hash({
test: 'sample text'
}).then((hash) => {
return Ember.RSVP.hash({
test: hash.test,
});
}, self);
}
然后在我的控制器中,我试图像这样访问这个模型参数:
控制器:
export default Controller.extend({
init() {
console.log(this.get('model.test');
}
我的控制台应该记录 'sample text' 但不幸的是我得到 'undefined'
是不是我用的init方法引起的?我想注意到我需要在加载此路由页面后立即访问此参数。
在 route.js 中使用 setupController
hook 它会在 model hook 之后调用,所以你会在参数中得到 controller
和 model
实例,所以你可以得到访问模型属性并根据 model
.
设置控制器属性
setupController(controller,model)
{
controller.setProperites(model);
//you can do anything with controller and model instance
}
init
方法将在您 model
挂钩完成执行之前调用,因此您无法像您那样访问它 this.get('model.test')
。
在您能够访问模型属性之前,父控制器对象可能需要进行一些设置。请尝试以下操作:
控制器
export default Controller.extend({
init() {
// This line calls the Controller constructor...
this._super(...arguments);
console.log(this.get('model.test');
}
});
The Ember docs 可能会为您提供所需的其他信息。
此外,控制器最有可能在您的模型承诺解决之前构建。在这种情况下,您将不得不使用 computed properties ,当您尝试访问计算的 属性.
时,只要所依赖的属性值发生更改,它就会更新
我在使用 EmberJS 时遇到了很大的麻烦。我正在使用 Ember.RSVP.hash 加载多个模型,如下所示:
路线:
model() {
const self = this;
return Ember.RSVP.hash({
test: 'sample text'
}).then((hash) => {
return Ember.RSVP.hash({
test: hash.test,
});
}, self);
}
然后在我的控制器中,我试图像这样访问这个模型参数:
控制器:
export default Controller.extend({
init() {
console.log(this.get('model.test');
}
我的控制台应该记录 'sample text' 但不幸的是我得到 'undefined'
是不是我用的init方法引起的?我想注意到我需要在加载此路由页面后立即访问此参数。
在 route.js 中使用 setupController
hook 它会在 model hook 之后调用,所以你会在参数中得到 controller
和 model
实例,所以你可以得到访问模型属性并根据 model
.
setupController(controller,model)
{
controller.setProperites(model);
//you can do anything with controller and model instance
}
init
方法将在您 model
挂钩完成执行之前调用,因此您无法像您那样访问它 this.get('model.test')
。
在您能够访问模型属性之前,父控制器对象可能需要进行一些设置。请尝试以下操作:
控制器
export default Controller.extend({
init() {
// This line calls the Controller constructor...
this._super(...arguments);
console.log(this.get('model.test');
}
});
The Ember docs 可能会为您提供所需的其他信息。
此外,控制器最有可能在您的模型承诺解决之前构建。在这种情况下,您将不得不使用 computed properties ,当您尝试访问计算的 属性.
时,只要所依赖的属性值发生更改,它就会更新