【问题标题】:I'm confused about behavior of `store.filter` method in Ember Data我对 Ember Data 中的 store.filter 方法的行为感到困惑
【发布时间】:2013-10-03 13:18:58
【问题描述】:

我对 Ember Data 的行为有点困惑。

请查看此示例:http://jsbin.com/ETEwUxU/9/edit。 单击“转到活动”,然后单击“转到索引”。请一遍又一遍地重复此导航。 并检查浏览器的 Javascript 控制台。

我的问题是……

  1. 为什么我们去index路由时会调用store.filter的函数?
  2. 为什么store.filter 的函数调用次数随着我们上面的重复而不断增加?
  3. 为什么当我们在ActiveRoute的模型钩子中取消store.find('post');时,store.filter的函数调用次数会增加?

这种行为是 Ember Data 的一个特性吗?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    当记录被添加到另一个记录数组时,它会触发过滤器数组重新检查过滤器是否是最新的:

    ** 采用类型和过滤器函数,并返回一个实时 RecordArray 在新记录加载到存储或创建时保持最新 本地。

    您每次到达路线时都会不断创建实时记录数组,每次调用 find 时都会保持最新状态。

    您可以将帖子下移一级并在帖子资源中获取它们,并将过滤器存储在该级别。然后,当您点击活动路线时,您可以从他上方的控制器中获取过滤后的列表。

    AKA PostsActiveController 从 PostsController 获取过滤后的结果集。

    http://jsbin.com/OCAKIjA/4/edit

    【讨论】:

    • 感谢您的澄清。所以我该怎么做?我不希望不必要地调用过滤器函数。在这些情况下是否有任何最佳做法?
    • 我会抓取资源并将其存储在路由上方的控制器上。 (这样您就可以在索引/活动路由中来回反弹)而无需重新获取过滤列表。您还可以存储索引路由的帖子,并避免为此访问商店,但这取决于您。
    • 谢谢!这对我很有帮助。我想试试后者。
    猜你喜欢
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2017-03-20
    • 2013-07-19
    相关资源
    最近更新 更多