Model.find().then() 在实际加载记录之前触发

2024-01-23

我想加载整个集合,然后只剥离记录以一次用作模型,而不是每次都与服务器进行往返。

我已经弄清楚如何使用 Ember.Deferred 返回承诺,但我无法在正确的时间得到解决的承诺。以下代码每次都只输出“Found 0”:

App.PersonRoute = Ember.Route.extend({
  model: function(params) {
    var name = "Erik";
    var promise = Ember.Deferred.create();
    App.people = App.Person.find();

    App.people.then(function() {
      console.log('Found ' + App.people.get('length'));
      var person = App.people.findProperty('name', name)
      promise.resolve(person);
    });

    return promise;
  }
});

如果我将 then() 的主体包装在 setTimeout 中,并让它等待几秒钟,一切都会很好。

还有另一个我可以绑定的事件吗?我尝试了 App.people.on('isLoaded'),但 isLoaded 始终为 true。

Thanks!


还有另一个我可以绑定的事件吗?

确实有一个事件你可以听,那就是didLoad.

我尝试了 App.people.on('isLoaded'),但 isLoaded 始终为 true。

As for isLoaded对此有很多困惑,请参阅here https://github.com/emberjs/ember.js/issues/2632例如,混乱来自于这样一个事实:isLoaded标志设置为 true按设计当商店完成加载时RecordArray记录在案,即使最初empty因为本地还没有可用的记录。然后当对服务器的请求返回时RecordArray将填充从后端收到的记录,绑定将启动并更新您的模板。

如中所述guides http://emberjs.com/guides/models/model-lifecycle/:

已加载且干净的记录意味着已从服务器接收到有关其属性和关系的信息,并且在客户端本地未进行任何更改。

上面所说的是什么使得didLoad fire.

对于更多与模型相关的活动,您可以收听并查看下面的指南模型生命周期 http://emberjs.com/guides/models/model-lifecycle/

现在进行设置,您可以将代码重写为如下所示:

App.PersonRoute = Ember.Route.extend({
  model: function(params) {
    var name = "Erik";
    var promise = Ember.Deferred.create();
    App.people = App.Person.find();

    App.people.on('didLoad', function() {
      console.log('Found ' + App.people.get('length'));
      var person = App.people.findProperty('name', name)
      promise.resolve(person);
    });

    return promise;
  }
});

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Model.find().then() 在实际加载记录之前触发 的相关文章

随机推荐

  • 如何部署消息排序的pubsub触发云函数?

    我想部署一个带有消息排序的 Pubsub 触发的云函数 https cloud google com pubsub docs ordering https cloud google com pubsub docs ordering gclo
  • 我如何删除 python 2.7,因为我已经在 ubuntu 上安装了 3.6.5?

    我安装了 2 7 和 3 6 5 起初在 ubuntu 18 04 中 唯一可用的 python 版本是 3 6 但在我安装了 numpy 包之后 2 7 也安装了 它变成了默认版本 有什么解决方案可以使 3 6 成为默认值而不是 2 7
  • Zend Forms - 元素 ID 修改以允许重复使用

    我有一个Zend Form我想在一页中多次重复使用的对象 我遇到的问题是每次渲染时它都有相同的元素 ID 我一直无法找到一种方法 可以在每次渲染表单时为所有 ID 提供唯一的前缀或后缀 完整的解决方案 子类Zend Form class M
  • .NET WebApi 如何防止 JSON 的 "$ref": "x" 输出

    我将 Web Api 与实体框架一起使用 我有一个名为 Gift 的控制器 当客户端 GET 的 API 时 我通过使用实体框架从 DB 获取所有 Gifts 并将其作为 JSON 返回 这是我的控制器功能 public List
  • 基于 DNS 的策略,用于在服务器关闭时显示漂亮的“当前离线”页面

    当服务器关闭时 如何使站点自动显示一个漂亮的 当前离线 页面 我的意思是 整个服务器关闭并且请求无法到达 IIS 手动更改 DNS 不是一个选项 Edit 我正在寻找某种 DNS 技巧来重定向到其他服务器 以防主服务器出现故障 我可以对 D
  • 如何设置 HTML5 范围输入的样式,使其在滑块前后具有不同的颜色?

    我希望左侧为绿色 右侧为灰色 如上图所示就完美了 最好是纯 CSS 解决方案 只需要担心 WebKit 这样的事可能吗 Pure CSS解决方案 Chrome 隐藏溢出input range 并填充剩余的所有空间 带有阴影颜色的拇指 IE
  • 为什么即使在配置之后 Git 也不允许我提交?

    这个问题看起来像是重复的 但事实并非如此 只是一个不断重复的细微差别 git 不断告诉我 请告诉我你是谁 即使在设置之后也是如此 当我跑步时git commit 这就是我得到的 git commit Please tell me who y
  • 我可以使用 JQuery 从 web.config 读取数据吗?

    我可以使用 JQuery 从 web config 读取数据吗 Jquery 是在浏览器中运行的 javascript 您的 web config 驻留在您的服务器上 如果您想公开 web config 中的数据 我认为您应该创建某种可以从
  • 编译错误:“stoi”不是“std”的成员

    My code include
  • Perl 6 中的递归正则表达式?

    我一直在试图弄清楚如何在 Perl 6 中执行递归正则表达式 对于一个玩具示例 平衡括号匹配器 它将匹配 inside PCRE https regex101 com r otEKh5 1例子 R Onigmo https rubular
  • 拖放图像

    我需要在 swing 中创建一个拖放系统 其中被拖动物体的图像在拖动过程中附加到光标上 理论上这是可以实现的 public Icon TransferHandler getVisualRepresentation Transferable
  • Altair - 无法获取折线图中某一层的工具提示

    当我绘制由两组线组成的分层图表时 某一层中的工具提示不显示 这也发生在 VL 编辑器中 任何有关为什么会发生这种情况的见解都将不胜感激 这是一个可重现的示例来演示该问题 实际上我在第一层有更多行 牛郎星版本 4 0 0 df pd Data
  • 如何删除 php 字符串中的%符号

    我需要从目录中的文件或图像名称中删除 符号 我使用哪个字符串 oldfile wallpapers temp uploaded file newfile wallpapers temp uploaded trim str replace f
  • 记录还是不记录?

    我现在正在构建一个程序 它是一个电子书管理器 阅读器 组织者和出版商 这也是一个电子书传输 到像 Kindle 这样的电子阅读器 但我正在开发它 一个问题突然出现在我的脑海中 日志或不 然后我开始考虑日志 由于许多程序都会记录操作 我开始寻
  • 使用Python os.walk来识别文件列表[重复]

    这个问题在这里已经有答案了 可能的重复 在Python中 在具有特定扩展名的目录中构建文件列表的最快方法 https stackoverflow com questions 8625908 in python fastest way to
  • 用于 C# 的 SCIM(跨域身份管理系统)库

    SCIM 标准的创建是为了通过定义表示用户和组的架构以及用于所有必要的 CRUD 操作的 REST API 来简化云中的用户管理 它旨在取代旧的 SPML 协议 有没有 成熟 的 C 库 我在 google 上搜索的大部分内容都是针对 Ja
  • 错误:ld.so:无法预加载对象 LD_PRELOAD:忽略

    我使用的是ubuntu 12 04 每次我启动 bash 终端以及每次输入完命令 并按 Enter 键 时 我都会收到以下消息 错误 ld so 对象 usr lib liblunar calendar preload so 来自 LD P
  • 将弹出窗口位置锁定到元素,或伪造带有图层的弹出窗口,以便在 ItemsControl 中进行就地编辑

    我想要实现的本质上是对数据绑定对象进行就地编辑ItemsControl在 wpf 中 my ItemsControl是一个水平的WrapPanel包含用户控件的多个实例 NameControl 它显示为带有人名的粉红色小字形 看起来像这样
  • C# REPL 工具;类似控制台的快速编译工具

    很多时候 我启动一个新的 Visual Studio 实例 只是为了创建一个具有一些输出和 或输入的控制台应用程序 这是一个临时沙箱 我用它来测试方法或其他东西 并在几分钟后关闭 您能想到任何工具来替代它吗 我曾经有一个具有两个文本字段的应
  • Model.find().then() 在实际加载记录之前触发

    我想加载整个集合 然后只剥离记录以一次用作模型 而不是每次都与服务器进行往返 我已经弄清楚如何使用 Ember Deferred 返回承诺 但我无法在正确的时间得到解决的承诺 以下代码每次都只输出 Found 0 App PersonRou