gpt4 book ai didi

ember.js - Ember 数据 store.find() 在使用无效 ID 调用时创建空项目

转载 作者:行者123 更新时间:2023-12-02 06:09:35 24 4
gpt4 key购买 nike

我有一个绑定(bind)到模型的列表,由 DS.RecordArray 支持。 ,正如使用的 Ember 数据示例 js fiddle 。当我调用 this.store.find({id} ) 使用有效的 id,一切都按预期工作。但是,当我调用 this.store.find({id})使用不存在的 id 或空字符串,将空模型添加到 DS.RecordArray ,这反射(reflect)在我的绑定(bind)列表中。

我在 JSFiddle here 中创建了这种行为的示例。 .我的示例有两个按钮来展示两种情况:

  • 调用find('post', 14)其中 14 表示不存在的 id。在这种情况下,按下此按钮一次会将空白元素添加到列表中,随后的按下不会执行任何操作。
  • 调用find('post', '')其中传递的是空字符串而不是 id。在这种情况下,每次按下此按钮时,都会在列表中添加一个空白元素。

  • 这种行为是预期的吗?如果是这样,在我的列表中避免这些空元素的最佳方法是什么?

    最佳答案

    store.find("type", id) 将委托(delegate)给 store.findById(type, id),它调用 store.recordForId(type, id)。如果你查看recordForId()的函数体,你会看到它会检查typeMap的id,如果不存在,调用buildRecord(type, id),它会创建一个该类型的记录并添加它到typeMap。

    这是预期的行为,因为它显然是有意这样做的,但是可以争论它是否是一个好主意。

    对于我的应用程序来说,这不是一个好主意,因此我将 store.findById 覆盖为 Ember.assert() 上的 id 是真实的,因为我从不尝试查找具有 0、null 或未定义 id 的记录。

    关于ember.js - Ember 数据 store.find() 在使用无效 ID 调用时创建空项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25734915/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com