如何从控制器访问模型?
How to access model from controller?
我似乎无法从控制器内部获取模型,即使控制器似乎设置了模型 属性。以下:
export default Ember.ObjectController.extend({
init: function() {
this._super();
console.log(this.get('model'));
console.log(this.model);
console.log(this);
}
}
打印出来:
有什么想法吗?
Ember.ObjectController
是模型的代理。因此,可以使用您在示例中找到的 this
来引用模型。那么在模板 {{this.aModelAttr}}
或 {{aModelAttr}} 中。就像你的问题表明它有点混乱。
从 Ember 1.11.0 开始,ObjectController
已弃用。因此,为了简化使用 Ember.Controller
并且在您的控制器中,您可以通过 this.get('model')
引用模型
然后在模板中使用{{model.aModelAttr}}
给 model
一个特定的域,即:书籍或用户名使用
export default Ember.Controller.extend({
domainSpecificName: Ember.computed.alias('model')
}
然后在您的模板中您可以使用 {{domainSpecificName.aModelAttr}}
事实证明,当我通过设置断点来检查模型时,它是空的。我假设控制台显示内容,因为它会在内容到达后更新模型。
在 init()
中无法访问模型:
init: function() {
this._super();
console.log(this.get('model')); // null
}
任何方法都相同.on('init')
:
onInit: function() {
console.log(this.get('model')); // null
}.on('init'),
但是该模型可供操作访问(我假设是因为在调用操作时已经设置了模型):
someAction: function() {
console.log(this.get('model')); // model object as expected
}
所以回答我的问题,this.get('model')
可用于从控制器访问模型,但不能在 init()
或 .on('init')
方法中使用。
我似乎无法从控制器内部获取模型,即使控制器似乎设置了模型 属性。以下:
export default Ember.ObjectController.extend({
init: function() {
this._super();
console.log(this.get('model'));
console.log(this.model);
console.log(this);
}
}
打印出来:
有什么想法吗?
Ember.ObjectController
是模型的代理。因此,可以使用您在示例中找到的 this
来引用模型。那么在模板 {{this.aModelAttr}}
或 {{aModelAttr}} 中。就像你的问题表明它有点混乱。
从 Ember 1.11.0 开始,ObjectController
已弃用。因此,为了简化使用 Ember.Controller
并且在您的控制器中,您可以通过 this.get('model')
然后在模板中使用{{model.aModelAttr}}
给 model
一个特定的域,即:书籍或用户名使用
export default Ember.Controller.extend({
domainSpecificName: Ember.computed.alias('model')
}
然后在您的模板中您可以使用 {{domainSpecificName.aModelAttr}}
事实证明,当我通过设置断点来检查模型时,它是空的。我假设控制台显示内容,因为它会在内容到达后更新模型。
在 init()
中无法访问模型:
init: function() {
this._super();
console.log(this.get('model')); // null
}
任何方法都相同.on('init')
:
onInit: function() {
console.log(this.get('model')); // null
}.on('init'),
但是该模型可供操作访问(我假设是因为在调用操作时已经设置了模型):
someAction: function() {
console.log(this.get('model')); // model object as expected
}
所以回答我的问题,this.get('model')
可用于从控制器访问模型,但不能在 init()
或 .on('init')
方法中使用。