2015-10-17 122 views
0

什么是在Ember路线上设置属性的正确方法?我有一个标题消息,希望在页面加载时显示,然后我想在用户与页面交互时更改该标题。是否可以更改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-tile title=title}} 

而且在我的组件标题,我打印出来(理论上)标题:

{{title}} 

我也尝试删除中间步骤,只是直接打印标题,但不起作用。

在控制台中,我没有任何错误,我可以从RSVP哈希中打印出模型数据。这没有(明显的)文档。所有文档都侧重于打印出模型属性。

我错过了什么?

编辑

这在我看来,路由只是为了处理模型和部件都应该采取一切照顾。

我实际上已经尝试明确调用在路由负载上设置的标题,它仍然无法正常工作。

... 
init() { 
    title: "Welcome!" 
} 
... 

回答

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 
    } 
    } 
}); 
+0

太棒了!谢谢。我仍然在包围着Ember的建筑。 – user3162553

相关问题