【问题标题】:How should I add events when using iron-router and meteor?使用 Iron-router 和 meteor 时应该如何添加事件?
【发布时间】:2013-09-20 23:30:02
【问题描述】:

在使用 Iron-router 之前,我使用以下方法附加事件:

Template.templatename.events = {};

使用iron-router,你通过路由中的data属性传递数据,一般不会触及全局Template对象……那我应该把事件放在哪里呢? 我应该继续使用 Template.tempaltename.events 吗?

您是否应该将全局模板对象与 Iron-router 结合使用?

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

    您混淆了两件事:模板“类”和模板“实例”。使用Template.name.events,您可以创建应用程序的全局行为:给定模板的呈现方式、对数据的反应方式、对用户事件的反应方式。

    您使用路由器发送的数据附加到给定模板instance,即显示在网页上的单个 DOM 节点相关对象。

    所以是的,你仍然应该使用Template.name.events,你也可以使用Template.name.rendered.created.deleted.customDataHelper等等。

     


     

    对了,最好还是用完整版的events

    Template.name.events({
       ...
    });
    

    从长远来看,它可以帮助您避免一些问题。

    【讨论】:

    • 休伯特,我倾向于使用第一种语法。第二种会产生什么样的问题?
    • 我也很好奇吉姆问了什么。
    • @JimMack 我认为第一个已弃用。
    • 想象一个有几个开发人员的大项目。当您使用Template.name.events = {},然后另一个开发人员开始在另一个地方使用相同的模板时,您的事件将在最好的情况下被删除。或者你会得到运行时错误——我在一个不太大的项目中看到过这样的错误,而且它们并不明显跟踪。如果您改用正确的形式Template.name.events({}),一切都会顺利进行。
    • 谢谢。我得到了整个方法的覆盖。为了澄清,我认为正在讨论的语法是 Template.name.specificHelper = function () {}。 @BenjaminRH 可能是对的。我喜欢它,因为它打字少,糖多。
    【解决方案2】:

    是的,我会继续附加这样的事件。 Iron 路由器并没有真正改变 UI 的工作方式。不过,我会留意更新,因为开发团队正在开发的新 Meteor UI 可能会在接下来的一两个月内准备就绪,届时这一切都会改变。

    【讨论】:

    • 感谢您的提醒。我认为这样的事情可能正在开发中... Meteor 是 0.6.5... 很年轻 ;)
    猜你喜欢
    • 2016-10-31
    • 2017-06-17
    • 1970-01-01
    • 2023-03-12
    • 2014-05-07
    • 2023-03-30
    • 1970-01-01
    • 2014-10-02
    • 2013-09-03
    相关资源
    最近更新 更多