Emberjs 异步路由

2023-11-21

我的问题与问题相关#1183 and #1268emberjs 的。

我在路线上有动态元素。如果我通过应用程序导航,一切都可以。问题是当我重新加载页面或输入网址时。在这种情况下,应用程序进入反序列化函数并通过其 id 加载和对象,但此加载是异步的。

有争议#1268卢克梅利亚 说“您需要使反序列化方法的结果实现承诺模式”.

我尝试过,但总是松散上下文。我的代码类似于:

page: Ember.Route.extend
route: '/:alias'
deserialize: (router, params) -> page=App.Page.find(params.alias)
$.when( page.get("isLoaded") ).done( () -> console.debug(page.get("alias")) return page)
loading: Em.State.extend

路由器进入加载状态,但随后返回,但没有上下文数据。我想我做错了什么。也许一切都是错的。

有谁能够帮助我?有没有和例子?

Thanks!

解决:

page: Ember.Route.extend
    route: '/:id'
    deserialize: (router, params) ->
        page=App.Page.find(params.id})
        deferred = $.Deferred()
        page.addObserver("isLoaded", -> deferred.resolve(page))
        return deferred.promise()
    serialize: (router, page) ->
        return {id: page.get("id") }
    connectOutlets: (router, page) ->
        router.get('applicationController').connectOutlet
            context: page
            name: "page"
loading: Em.State.extend
    connectOutlets: (router, context) ->
        router.get('applicationController').connectOutlet(context: context, name: "loading")

当页面加载时,活动状态正在加载,当页面加载完成时,路由器自动加载页面状态。

我希望这可以帮助别人


@leroj7你已经找到了一个可行的解决方案。感谢您分享。我创建了一个 mixin,将其添加到需要具有此行为的模型中:

Editor.ModelPromise = {
  init: function() {
    this._super();
    this._deferred = $.Deferred();
    this._deferred.promise(this);
    this.one('didLoad', this, '_resolveModelPromise');
    this.one('becameError', this, '_rejectModelPromise');
  },
  _resolveModelPromise: function() {
    this._deferred.resolve(this);
  },
  _rejectModelPromise: function() {
     this._deferred.reject(this);
  }
};

也可在https://gist.github.com/1b54f0956ba10195a3bc

像这样的方法最终将被纳入 ember-data 中,尽管它很可能不会依赖 jQuery,因为 ember-data 目前不依赖于 jQuery。

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

Emberjs 异步路由 的相关文章

随机推荐

  • 为什么 hibernate 执行两个查询来急切加载 @OneToOne 双向关联?

    我有一个实体 A 它有一个 B 实体 而 B 有一个带有 OneToOne 双向关联的 A 现在 当我找到所有 A 记录时 hibernate 会在 B 上使用左外连接执行两个查询 如下所示 select a id a id b a fie
  • 使用 PHP 和 C# 进行 Mcrypt 和 Base64

    我在两个平台上编写了相同的方法 我相信这应该会产生相同的结果 但它没有发生 我用相同的密钥加密了相同的文本 但结果不同 有人能弄清楚为什么会发生吗 String 这是测试 Key 1234567812345678 PHP加密字符串 ybUa
  • R随机将数据分成两部分

    我试图将我的数据框随机分成两部分 例如 我想将随机 70 的数据放入一个数据框中 将另外 30 的数据放入另一个数据框中 有没有快速的方法来做到这一点 原始数据帧中的行数超过 800000 我尝试使用 for 循环 从行数中选择一个随机数
  • 在特定位置截断 UILabel

    我使用表格视图显示书籍列表 其中每个单元格都有一个UILabel显示书名和另一本书UILabel显示该书的作者 我的问题是关于作者标签的 一本书可以有多个作者 我希望它的行为如下 如果书只有一位作者 约翰 科尔曼 标签应为 约翰 科尔曼 如
  • 需要默认选择 Angular JS 单选按钮

    我是 Angular JS 的新手 我正在尝试创建一组单选按钮 创建按钮是很容易的部分 但我在弄清楚如何默认选择其中一个而不破坏所有内容时遇到问题 我已经在 Angular 文档和多个其他 stackoverflow 问题中阅读了有关使用
  • 临时约束需要需要需要需要吗?

    假设我正在编写一个类模板 其中一些成员的存在受到限制和价值类型模板参数 static constexpr 数据成员的 template
  • 如何在没有连接的情况下同步管理器/工作线程?

    我熟悉多线程 并成功地用 Java 和 Objective C 开发了许多多线程程序 但如果不使用主线程的连接 我无法使用 pthreads 在 C 中实现以下目标 include
  • Angular 5 - 如何在 DatePipe 中使周期字段类型小写

    在 Angular 5 1 中使用 DatePipe 我需要将周期字段类型 AM PM 设置为小写格式 根据文档 Tuesday December 19 7 00 am 应该 date EEEE MMMM d h mm a 但是 句点字段类
  • 更改 Java printf 中的默认填充字符?

    如果我们这样做System out printf 10s 1 默认情况下 会添加空格字符来填充10 对吧 有办法改变这个吗 我知道 你可以添加0 通过指定0之前s 但是确实printf支持其他什么吗 没有 空间是硬编码的 这是 java u
  • PHP 函数参数错误抑制、empty() isset() 模拟

    我很确定这个问题的答案是否定的 但万一有一些 PHP 大师 是否可以以一种可以传入无效参数或不存在的变量的方式编写一个函数 并且在不使用 php 的情况下不会出错 就像empty和isset一样 你可以传入你刚刚编写的变量 不会出错 ex
  • 表单主题日期时间小部件 Symfony 2

    我喜欢在表单中 形成主题 我的日期时间小部件 我创建了一个 fields html twig 文件 其中包含以下内容 block datetime widget spaceless div day month year replace da
  • strptime、as.POSIXct 和 as.Date 返回意外的 NA

    当我尝试解析以下格式的时间戳时 Thu Nov 8 15 41 45 2012 仅NA被返回 我使用的是 Mac OS X R 2 15 2 和 Rstudio 0 97 237 我的操作系统的语言是荷兰语 我认为这与它有关 当我尝试时st
  • 脚本 @php artisan package:discover --ansi 处理返回的 post-autoload-dump 事件,错误代码为 -1073741819

    从我的 github 中拉出一个项目后 我收到了一些奇怪的错误代码 我做的第一件事是composer dumpautoload composer update and php artisan migrate fresh seed每当我到达新
  • Django:内置密码重置视图

    我正在遵循文档 当我单击页面以重新启动密码时 出现 NoReverseMatch 错误 resetpassword 处无反向匹配 与 password reset done 相反 未找到参数 和关键字参数 尝试了 0 个模式 urls py
  • iOS 分发证书过期会怎样?

    我现在正在向 iTunes connect 提交 iPhone 应用程序 我有一个关于分发证书的问题 如果分发证书过期会发生什么 用户购买的应用程序在证书过期后会停止运行或崩溃吗 或者分发证书过期后用户无法安装应用程序或无法从App Sto
  • 是否可以在不使用偏移量的情况下将指针存储在共享内存中?

    当使用共享内存时 每个进程可以将共享区域映射到其各自地址空间的不同区域 这意味着当在共享区域中存储指针时 您需要将它们存储为偏移量共享区域的开始 不幸的是 这使原子指令的使用变得复杂 例如 如果您尝试编写一个无锁算法 例如 假设共享内存中有
  • 如何使用 Bing 地图检索邮政地址的纬度和经度?

    我希望能够检索给定地址的地理坐标 纬度和经度 我希望如果我有完整的地址 街道地址 城市 州 邮政编码 我可以做到这一点 如果重要的话 我正在使用 Bing 地图 我得到的框架代码是这样的 fullAddress AddPushpin 和 g
  • 使用node.js读取Excel文件

    好的 所以我正在使用FileUploader将我的文件从 Angular 上传到我的模块REST API var uploader scope uploader new FileUploader url api getUrl uploadC
  • JavaScript:如何找出浏览器窗口中视口的宽度和高度?

    如何找出浏览器窗口中视口的宽度和高度 如何找出有多少文档向下和向右滚动 尝试这个函数 并在需要时调用它 function getViewPortSize var viewportwidth var viewportheight Standa
  • Emberjs 异步路由

    我的问题与问题相关 1183 and 1268emberjs 的 我在路线上有动态元素 如果我通过应用程序导航 一切都可以 问题是当我重新加载页面或输入网址时 在这种情况下 应用程序进入反序列化函数并通过其 id 加载和对象 但此加载是异步