【问题标题】:how to access an instance of an controller如何访问控制器的实例
【发布时间】:2014-10-06 07:17:24
【问题描述】:

我有一个带有查看器模板、查看器控制器和代表查看器模板模型的项目列表的 Ember 应用程序。 该应用程序包含两个主要功能:查看单个项目或比较两个或多个项目。 对于单个视图,它非常简单:我只有一个查看器控制器实例,当用户想要查看另一个项目时,我更改了模型。 对于多个视图,我有一个问题:我有相同查看器控制器的多个实例,对于某些操作,我需要该实例将操作从路由发送到查看器控制器。对于单个视图,我使用 controllerFor('name of it') 获取控制器的实例,但是当有多个实例时,我不知道如何访问特定的控制器实例。

对于多视图,用户需要用鼠标选择活动项。在内部,模型中的项目具有一个 selected 属性,该属性仅在用户单击它时才为真。

一个想法,可能不是好的想法,将控制器实例保留在模型中的每个项目上。通过这种方式,我将查找所选项目,并从该项目中获取控制器实例。另一个想法是让被选中的查看器控制器的实例保持在路由上。

您知道使用 EmberJS 访问特定控制器实例的最佳方法是什么吗?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    我希望父控制器是 ArrayController,并将 itemController 属性设置为您当前的查看器控制器。 http://emberjs.com/api/classes/Ember.ArrayController.html

    然后,您可以在模板中使用{{#each}} 渲染它们,甚至可以在需要时指定视图。

    【讨论】:

    • 这正是我所拥有的情况:在模板中呈现的数组控制器在 UL 列表中带有 {{each}}。但是对于某些操作,我需要路由中 itemController 的正确实例,但我不知道如何检索它。
    • 您可以使用arrayController.findBy('id', id); 从中获取特定的控制器@shareit
    猜你喜欢
    • 2014-01-10
    • 2016-10-25
    • 2021-06-13
    • 1970-01-01
    • 2015-12-14
    • 2015-09-11
    • 1970-01-01
    • 2010-11-27
    • 2017-02-18
    相关资源
    最近更新 更多