javascript - 应用程序的 View 或部分如何在 ember js 中相互通信

标签 javascript ember.js publish-subscribe

我最近正在研究 emberjs。我有一个关于 View 如何相互通信的问题。我知道 View 不通信,所以问题可能是路由或 Controller ( View 模型)。

来自其他框架和语言,我使用了一种称为 pubsub 的模式来传播特定信息已更改的信息,其他 View (对此信息感兴趣的 View )将订阅并可以在发送事件/消息时更新.

这也是一种适用于 emberjs 哲学的模式吗?或者您将如何根据其他部分的更改更新 UI 上的不同部分?

一个(非常)简单的例子可以是:

-> Application
  -> Navigation which contains a Link to the posts route with a number of current posts (count)
  -> Posts route would have a list of post with details (and add,delete,etc) actions

现在,当我创建一个帖子时,它会被添加到列表中,我应该如何更新导航中的帖子计数?

显然,这也可以/应该适用于更复杂的示例。 作为说明: 目前我还有一个用于统计数据的服务器路由。所以导航和它的帖子数将从服务器获取并且它不受帖子数组的长度限制......

使用 emberjs 处理此类问题的最佳方法是什么?

最佳答案

http://emberjs.com/guides/views/ 中所述, View 基本上用于处理用户事件和创建可重用的组件。然而,一些有用的事实是,

1View 模板将呈现的内容基于相应Controller 持有的模型和属性。

2View 可以访问它对应的 Controller 以及任何其他关联的 Controller (通过 needs 属性 http://emberjs.com/guides/controllers/dependencies-between-controllers/ ) 和它们持有的数据。

3。如果 View 共享一个模型,那么它们将在模型更改时更新。发生这种情况有几种情况,最常见的一种是通过 {{view}} 助手插入 View 。( http://emberjs.com/guides/views/inserting-views-in-templates/ )

4。如果 View 或其相应的 Controller 正在观察或绑定(bind)到公共(public)属性,那么它们也将被更新(http://emberjs.com/guides/object-model/classes-and-instances/)。

考虑到这些事实,可以根据特定系统的要求解决这个特定问题。例如,一些选项可以是(附有粗略示例)

http://emberjs.jsbin.com/huqoq/1/edit

  • 如果数据是延迟加载的,例如在页面中,然后让 Navigation Controller observe Posts Controller 枚举帖子的变化,可以触发对服务器的请求以检索根据操作(创建/删除)更新帖子总数或更新计数器值。

http://emberjs.jsbin.com/jomes/1/edit

  • Navigation View 可以简单地插入到 Posts View 中并共享相同的模型,并具有显示总帖子数的计算属性。

http://emberjs.jsbin.com/xujap/1/edit

http://emberjs.jsbin.com/gihep/1/edit

关于javascript - 应用程序的 View 或部分如何在 ember js 中相互通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21706534/

相关文章:

javascript - 使用javascript更新图像src

javascript - 带设备摄像头的 A 型框架 : how to see video behind the a-scene?

ember.js - 使用 Ember.js 编写并提交表单 View

xmpp - 如何管理在 XMPP 中离线时发送的 PubSub 通知?

java - 从 JavaScript 访问列表项

javascript - 按时间旋转 body 的背景图像

ember.js - 访问 Ember Handlebars 中的数组元素

javascript - 如果将关系指定为链接,则防止 ember-data 从服务器重新加载关系

jms - activemq、jms 主题和带有选择器的订阅者

java - 如何通过将两个 Flux 中的值配对到一个元组中来组合发布者?