在Ember路线上设置属性的正确方法是什么?我有一个标题消息,我希望在页面加载时显示,然后我想在用户与页面交互时更改该标题。
import Ember from 'ember';
export default Ember.Route.extend({
title: "Welcome!",
model(thing1) {
return Ember.RSVP.hash({
thing1: this.store.findRecord('thing1', thing1.thing_id),
thing2: this.store.findAll('thing2'),
thing3: this.store.findAll('thing3')
});
},
actions: {
changeTitle() {
this.set("title", "I changed!")
}
}
});
在我的模板中,我加载另一个组件并传入title
的值{{title-tile title=title}}
在我的组件标题中,我打印出(理论上)标题:
{{title}}
我还尝试删除中间步骤并直接打印出标题,但这不起作用。
在控制台中我没有错误,否则我能够从RSVP哈希打印出模型数据。没有(明显的)文档。所有文档都侧重于打印模型属性。
我错过了什么?
修改
在我看来,路由只是为了处理模型而且组件应该处理其他所有事情。
我实际上已尝试明确调用要在路由加载时设置的标题,但它仍无法正常工作。
...
init() {
title: "Welcome!"
}
...
答案 0 :(得分:1)
您可以在传递给模板的哈希中使用计算属性:
export default Ember.Route.extend({
title: 'Welcome!',
model(thing1) {
return Ember.RSVP.hash({
// ... omitted for brevity
title: Ember.computed(() => this.get('title')) // computed property
});
},
actions: {
changeTitle() {
this.set("title", "I changed!")
this.refresh(); // it is required to refresh model
}
}
});