从路径更新组件显示

时间:2015-10-25 18:12:12

标签: ember.js ember-cli

要了解有关使用服务和组件的更多信息,我正在尝试设置一个简单的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}}

1 个答案:

答案 0 :(得分:0)

在访问服务方面,我喜欢他们使用文档的示例:http://guides.emberjs.com/v2.1.0/applications/services/

ShoppingCart服务注入需要访问购物车的组件。

一旦您有权访问ShoppingCart,您应该能够:

  • 在路线错误捕获中为用户服务设置通知。
  • 根据可以切换错误消息的组件hasError上的Notification服务(某种hasNotification方法)设置Computed Property。

只要您设置了通知,您的组件就会看到它正在观看的媒体已更改,并会显示/隐藏您的通知。