要了解有关使用服务和组件的更多信息,我正在尝试设置一个简单的Flash消息样式服务。在我的路线中,我正在保存记录并从服务器接收json通知或json错误。
由于这是一种我最终想要在app范围内使用的行为,我正在使用一个简单的服务(注入我的路由)来处理显示消息。在一条路线中,我可以拨打this.get('notification').displayMessage(msg)
。
目前,服务中的displayMessage
功能只是警告消息,因为我一直在研究如何创建服务可以“更新”的组件。服务如何与组件通信,以便我可以发送消息并从组件模板中显示它?
个人资料/指数路线
user.save().then( (response) => {
//display response.notice in the app-notification component template
}, (response) => {
let errors = JSON.parse(response.errors);
//display response.error in the app-notification component template
this.get('notification').displayMessage(errors[0]);
}
服务
import Ember from 'ember';
const { Service } = Ember;
export default Service.extend({
displayMessage(msg) {
alert("message ---> " + msg);
}
});
组件
???
组件模板
<h2 class="alert">{{message}}</h2>
申请模板
{{app-notification message=message}}
答案 0 :(得分:0)
在访问服务方面,我喜欢他们使用文档的示例:http://guides.emberjs.com/v2.1.0/applications/services/
ShoppingCart服务注入需要访问购物车的组件。
一旦您有权访问ShoppingCart,您应该能够:
hasError
上的Notification服务(某种hasNotification方法)设置Computed Property。只要您设置了通知,您的组件就会看到它正在观看的媒体已更改,并会显示/隐藏您的通知。