# Angus 的事件插件 📅

**URL:** https://meta.discourse.org/t/angus-events-plugin/69776
**Category:** Plugin
**Created:** [2017年九月11日 02:44 UTC](https://meta.discourse.org/t/angus-events-plugin/69776 "2017-09-11T02:44:59Z")
**Posts on this page:** 20
**Page:** 28

<div class="post-metadata">

### Author: ![Bishan\_Kanfang](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bishan_kanfang/32/155083_2.png) [@Bishan\_Kanfang](https://meta.discourse.org/u/Bishan_Kanfang)
#### Post date: [2019年九月14日 03:17 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/551 "2019-09-14T03:17:26Z")

</div>

我今天升级到了最新版本，现在可以用了。谢谢！

---

<div class="post-metadata">

### Author: ![fzngagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fzngagan/32/259349_2.png) [@fzngagan](https://meta.discourse.org/u/fzngagan)
#### Post date: [2019年九月14日 03:28 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/552 "2019-09-14T03:28:31Z")

</div>

这很好。你肯定遇到了这个问题。

> **[Pavilion](https://pavilion.tech/)**
>
> Pavilion is the leading Discourse consultancy.

---

<div class="post-metadata">

### Author: ![oca](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/oca/32/156060_2.png) [@oca](https://meta.discourse.org/u/oca)
#### Post date: [2019年九月17日 18:20 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/553 "2019-09-17T18:20:59Z")

</div>

大家好，

我大约一个月前遇到了一个 bug，我既无法复现，也不知道如何解决。  
在我管理的其中一个实例上， **“日程”页面是按活动日期排序，而不是按事件日期排序** 。  
我使用了以下插件（但我不认为它们与此有关，因为我在其他实例上也使用相同的插件）：

> **插件**
>
> [discourse-checklist](https://github.com/discourse/discourse-checklist) 0.4.1 启用  
> [discourse-custom-wizard](https://github.com/angusmcleod/discourse-custom-wizard) 0.1 启用  
> [discourse-data-explorer](https://github.com/discourse/discourse-data-explorer) 0.2 启用  
> [discourse-events](https://github.com/angusmcleod/discourse-events) 0.1 启用  
> [discourse-footnote](https://github.com/discourse/discourse-footnote) 0.1 启用  
> [discourse-locations](https://github.com/angusmcleod/discourse-locations) 0.1 启用  
> [discourse-math](https://github.com/discourse/discourse-math) 0.9 禁用  
> [discourse-quick-messages](https://github.com/angusmcleod/discourse-quick-messages) 0.1 禁用  
> [discourse-sidebar-categories](https://github.com/Toxuru/discourse-sidebar-categories) 0.1 启用  
> [discourse-solved](https://github.com/discourse/discourse-solved) 0.1 启用  
> [discourse-whos-online](https://github.com/davidtaylorhq/discourse-whos-online) 1.0 启用  
> [docker\_manager](https://github.com/discourse/docker_manager) 0.1 启用

大家是否有任何关于配置问题的提示，或者我可能做了什么导致问题，或者我应该检查哪些地方来诊断问题？

如需更多细节或通过私聊访问该实例，请随时联系。

提前感谢。

---

<div class="post-metadata">

### Author: ![fzngagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fzngagan/32/259349_2.png) [@fzngagan](https://meta.discourse.org/u/fzngagan)
#### Post date: [2019年九月18日 19:23 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/554 "2019-09-18T19:23:39Z")

</div>

感谢提交报告。  
请点击本主题首帖中的“报告错误”链接，并填写相关详细信息。这样我们将更容易安排合适的时间来调查该问题。

---

<div class="post-metadata">

### Author: ![oca](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/oca/32/156060_2.png) [@oca](https://meta.discourse.org/u/oca)
#### Post date: [2019年九月25日 11:25 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/555 "2019-09-25T11:25:43Z")

</div>

大家好，

在主题名称旁边，`/latest`、`/top`、`/unread` 或 `/agenda` 页面上会显示一个日历图标和事件日期。但在 \<分类 + 最新\> 页面以及移动设备上，这些内容并未显示。

是否有设置可以在此处添加它们？（我没能找到相关设置）

如果没有，是否有人能提供一个临时的变通方法来实现这一功能？例如，通过复制粘贴 `/latest` 插件代码中的某些内容，使其在 `/categories` 页面也生效？（即使这样会让界面显得杂乱，我也可以借助 CSS 来尽量优化视觉效果）

提前感谢！

---

<div class="post-metadata">

### Author: ![fzngagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fzngagan/32/259349_2.png) [@fzngagan](https://meta.discourse.org/u/fzngagan)
#### Post date: [2019年九月29日 05:12 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/557 "2019-09-29T05:12:23Z")

</div>

是的，我们已在我们的实例上报告了此问题。我们将很快安排修复。

---

<div class="post-metadata">

### Author: ![spirobel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/spirobel/32/170908_2.png) [@spirobel](https://meta.discourse.org/u/spirobel)
#### Post date: [2019年十月5日 13:53 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/558 "2019-10-05T13:53:41Z")

</div>

> <https://github.com/angusmcleod/discourse-events/blob/3135b10525b528648c5ac26ee51aee5cbff6ec31/assets/javascripts/discourse/connectors/edit-topic/topic-controls-event.js.es6#L16>

```plaintext
      if (this._state === 'destroying') return;

```

你能告诉我这段在 Ember Observer 中的代码的作用是什么吗？它是否与 Ember 组件的生命周期有关：[https://guides.emberjs.com/release/components/the-component-lifecycle/？](https://guides.emberjs.com/release/components/the-component-lifecycle/%EF%BC%9F)

---

<div class="post-metadata">

### Author: ![fzngagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fzngagan/32/259349_2.png) [@fzngagan](https://meta.discourse.org/u/fzngagan)
#### Post date: [2019年十月5日 14:29 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/559 "2019-10-05T14:29:40Z")

</div>

> [@spirobel](#):
>
> 这与 Ember 组件的生命周期有关吗：

是的。你实际上可以在控制台中打印它，并查看其在不同生命周期事件期间的值。

---

<div class="post-metadata">

### Author: ![spirobel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/spirobel/32/170908_2.png) [@spirobel](https://meta.discourse.org/u/spirobel)
#### Post date: [2019年十月5日 14:38 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/560 "2019-10-05T14:38:33Z")

</div>

那么，当状态为 ‘destroying’ 时，直接返回的目的是什么？如果我们省略这一行会发生什么？

---

<div class="post-metadata">

### Author: ![fzngagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fzngagan/32/259349_2.png) [@fzngagan](https://meta.discourse.org/u/fzngagan)
#### Post date: [2019年十月5日 14:55 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/561 "2019-10-05T14:55:55Z")

</div>

为了防止接下来的两条语句被执行，因为它们将变得没有必要 🙂

---

<div class="post-metadata">

### Author: ![spirobel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/spirobel/32/170908_2.png) [@spirobel](https://meta.discourse.org/u/spirobel)
#### Post date: [2019年十月5日 14:58 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/562 "2019-10-05T14:58:31Z")

</div>

所以这是为了性能吗？

> [@fzngagan](#):
>
> 没必要

---

<div class="post-metadata">

### Author: ![fzngagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fzngagan/32/259349_2.png) [@fzngagan](https://meta.discourse.org/u/fzngagan)
#### Post date: [2019年十月5日 17:11 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/563 "2019-10-05T17:11:32Z")

</div>

即使没有性能提升，这样做也是值得的。你为什么要在一特定情况下执行一堆毫无用处的语句呢？

经过思考和研究，我发现有一个合适的术语来描述这种函数写法，叫做“提前返回模式”（return early pattern）。

---

<div class="post-metadata">

### Author: ![spirobel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/spirobel/32/170908_2.png) [@spirobel](https://meta.discourse.org/u/spirobel)
#### Post date: [2019年十月6日 09:49 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/564 "2019-10-06T09:49:57Z")

</div>

![discourse_err](https://global.discourse-cdn.com/meta/original/3X/c/2/c2da4450cf348da943a9fcf3944a550069642c33.png)  
我做了进一步的排查。我在该行设置了断点，然后执行了这些语句。执行它们不仅没有必要，实际上还会导致错误。

---

<div class="post-metadata">

### Author: ![fzngagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fzngagan/32/259349_2.png) [@fzngagan](https://meta.discourse.org/u/fzngagan)
#### Post date: [2019年十月6日 10:12 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/565 "2019-10-06T10:12:36Z")

</div>

> [@fzngagan](#):
>
> 为了避免接下来的两条语句被不必要地执行

我说是“不必要”，不过确实也会抛出错误。如果你感兴趣，可以看看 `ember-concurrency`，它提供了开箱即用的解决方案来处理这类情况。不过，它目前尚未包含在 Discourse 核心中。

因此，如果使用它，这种情况将由库本身来处理。

---

<div class="post-metadata">

### Author: ![spirobel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/spirobel/32/170908_2.png) [@spirobel](https://meta.discourse.org/u/spirobel)
#### Post date: [2019年十月7日 15:51 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/566 "2019-10-07T15:51:22Z")

</div>

我在学习观察者（observers）与计算属性（computed properties）的区别时，刚观看了这场演讲：

[![](https://img.youtube.com/vi/7PUX27RKCq0/maxresdefault.jpg "The observer tip-jar - Stefan Penner") ](https://www.youtube.com/watch?v=7PUX27RKCq0)

你能解释一下为什么在这种情况下使用了观察者，而不是计算属性吗？  
我希望能理解它们各自的权衡以及不同的适用场景。

---

<div class="post-metadata">

### Author: ![Andy02](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/andy02/32/119498_2.png) [@Andy02](https://meta.discourse.org/u/Andy02)
#### Post date: [2019年十月7日 18:45 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/567 "2019-10-07T18:45:04Z")

</div>

能否让它在标签或标签页面上运行？

---

<div class="post-metadata">

### Author: ![tobiaseigen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobiaseigen/32/539204_2.png) [@tobiaseigen](https://meta.discourse.org/u/tobiaseigen)
#### Post date: [2019年十月7日 18:57 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/568 "2019-10-07T18:57:55Z")

</div>

您希望在标签/标签页上实现什么功能？Events 插件主要影响主题，但分类也可以获得该分类内事件主题的日历和议程视图。您是在建议提供已标记事件主题的议程视图吗？这看起来会很有趣，例如显示所有按国家标记的活动。那将非常酷！但据我所知，目前这并不在路线图之上。您可以在 [https://thepavilion.io/](https://thepavilion.io/) 上请求该功能。

---

<div class="post-metadata">

### Author: ![Andy02](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/andy02/32/119498_2.png) [@Andy02](https://meta.discourse.org/u/Andy02)
#### Post date: [2019年十月7日 19:06 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/569 "2019-10-07T19:06:37Z")

</div>

感谢你的回复 @tobiaseigen。我们正在大力推广标签功能以优化用户导航，因为它非常灵活。主要问题在于大多数插件和主题组件尚不支持标签。因此，我们确实希望提供额外的灵活性。用户为帖子添加的任何标签，在访问该标签页面时都会附带一个可使用的日历。

你可以参考 Kanban 插件，我们的一位志愿者 Public Happiness Movement 开发者成功将其适配到了标签页面：[https://github.com/artysidorenko/discourse-kanban-theme](https://github.com/artysidorenko/discourse-kanban-theme)

我本人只是个基础开发者，但我在想 @artysidorenko 使用的代码是否可以修改后也适用于这个插件。说实话，有众多插件和主题组件若能同时支持标签页面将受益匪浅，我好奇核心团队是否考虑打包一个标准解决方案。

---

<div class="post-metadata">

### Author: ![spirobel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/spirobel/32/170908_2.png) [@spirobel](https://meta.discourse.org/u/spirobel)
#### Post date: [2019年十月7日 19:33 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/570 "2019-10-07T19:33:43Z")

</div>

您可以不仅按类别，还可以在全系统范围内启用该插件。这对您的使用场景来说可能已经足够了。

---

<div class="post-metadata">

### Author: ![Andy02](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/andy02/32/119498_2.png) [@Andy02](https://meta.discourse.org/u/Andy02)
#### Post date: [2019年十月8日 15:07 UTC](https://meta.discourse.org/t/angus-events-plugin/69776/571 "2019-10-08T15:07:46Z")

</div>

感谢您的回复。如果使用标签进行导航，用户将不在某个分类中，因此无法查看日历或链接；而一个涵盖整个网站的日历对于多个团队来说并不够用。

[上一頁](https://meta.discourse.org/t/angus-events-plugin/69776.md?page=27)

[下一頁](https://meta.discourse.org/t/angus-events-plugin/69776.md?page=29)
