如何返回延迟承诺并使用 Ember.Deferred 创建模型?

2024-05-21

我正在尝试创建一个User.current()在我的应用程序中,它使用从我的服务器提取数据$.getJSON('/users/current', function(data) { ... });。我正在使用 Discourse 使用的 Singleton 方法,该方法执行以下操作:

Dashboard.Singleton = Ember.Mixin.create({
        // See https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/mixins/singleton.js

        current: function() {
                if (!this._current) {
                        this._current = this.createCurrent();
                }
                return this._current;
        },

        createCurrent: function() {
                return this.create({});
        }
});

而在我的User单例模型,我重写了createCurrent如下:

Dashboard.User.reopenClass(Dashboard.Singleton, {
        createCurrent: function() {
                return Ember.Deferred.promise(function(p) {
                        return p.resolve($.getJSON('/users/current').then(function(data) {
                                return Dashboard.User.create(data);
                        }));
                });
        }
});

User 是一个普通的 Ember 对象模型:

Dashboard.User = Ember.Object.extend({

});

这确实向服务器请求数据,但该功能未设置User.current()正确 - 当我检查它时,User.current()没有任何应该设置的属性,例如name.

如何使用 Ember 的 deferred 和 Promise 返回并设置当前用户?


这是因为您正在代替用户返回承诺。

为什么不先创建用户,然后再填写属性呢?

或者使用 Ember Data 使用的 Promise Proxy 模式(一旦解析,promise 就可以用作对象)

DS.PromiseObject = Ember.ObjectProxy.extend(Ember.PromiseProxyMixin);

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

如何返回延迟承诺并使用 Ember.Deferred 创建模型? 的相关文章

  • Ember.js 动态子视图

    我无法让 ember 渲染动态子视图 似乎一旦渲染了子视图 绑定就会丢失 这是一个jsfiddle http jsfiddle net zaius XYzfa http jsfiddle net zaius XYzfa 当您在两个编辑器页面
  • Ember 未在生产环境中加载某些图像

    我有一个 Ember cli 1 13 应用程序 它在公共目录中存储了很多图像 现在 它将正确加载除特定组件中的图像之外的所有图像 该组件的调用方式如下 list item url list url name List Name price
  • 如何将子记录添加到现有父记录中?

    我一直在 Google 和 Stack Overflow 上搜索有关这个主题的某种提示 但信息充其量是分散的 我正在尝试创建一个新的子记录 Comment 并将其保存到现有的父记录 Post 我使用的是 Ember Model 而不是 Em
  • emberjs 无法克隆未实现 Ember.Copyable 的 Ember.Object

    我正在使用 ember 1 3 1 和 ember data 1 0 0 beta 5 在创建新模式时我收到 以下错误 断言失败 无法克隆未实现 Ember Copyable 的 Ember Object 以下是我的模型代码 App myM
  • 使用变量名调用 Handlebars {{render}}

    有没有办法将变量上下文传递给 render helper 例如 我的模型具有多态关系 我想为每种不同类型呈现适当的视图 无需编写一整串if声明 my events模板看起来像这样 ul each event in model li even
  • 计算属性应该在模型或控制器中声明吗?

    具有以下用户模型 Sks User DS Model extend firstName DS attr string lastName DS attr string fullName 计算属性应该在哪里声明 fullName Ember c
  • 如何制作具有移动外观的 emberjs 应用程序(如 jquery mobile 中的应用程序)?

    我有一个使用 Emberjs 的简单移动 Web 应用程序项目 对于外观和感觉 我想要类似于 JQuery Mobile 的东西 有没有办法混合使用 Emberjs 和 jquery mobile 如果是这样 怎么办 我查看了 Travis
  • 如何将 hashbang url 更改为历史 API

    我正在使用 ember1 0 rc3 我想将 hashbang url 更改为正常的 url 格式 即 www site com admin page1 到 www site com admin page1 更改 我在应用程序路由器中使用位
  • 客户端 Javascript 应用程序 - 不带哈希标签的 url 路由

    我正在使用最新版本的 Ember js 开发一个新的仅客户端应用程序 有一个 PHP 页面可以构建脚本 CSS 模板文件等 并将其全部传递到 index php 中 我使用 htaccess 指令 以便所有请求都重写到 index php
  • Emberjs不会加载jquery/javascript,在页面中插入html时运行代码

    Help 我正在开发一个丰富的 emberjs yeoman 项目 该项目使用多个 hbs 模板 这些模板都可以从一个 application hbs 的侧边栏路由到 问题是当我加载页面时 有时使侧边栏折叠的 Jquery 不起作用 而同一
  • 将 css 类添加到 Ember.js 中的

    如何将CSS类添加到特定路线上的body标签 我尝试使用body在车把模板中添加标签但不起作用 Update 经过一番谷歌搜索后 我找到了这个解决方案 不确定这是最好的方法 但它确实有效 App SomeRoute Em Route ext
  • Ember.js:过渡到路由,然后到动态段

    我有一个设置有帐户和 account account id 选项的路由器 当用户登陆我的应用程序的索引页面时 我将它们转换到帐户路径 Social Router map function this resource accounts fun
  • 加载 Ember.View 的内容后初始化 jQuery 插件

    DEBUG Ember VERSION 1 0 0 rc 6 ember js DEBUG Handlebars VERSION 1 0 0 rc 4 ember js DEBUG jQuery VERSION 1 9 1 控制器是一个Em
  • Ember CLI 中的把手助手语法

    在这篇文章中 使用 Handlebars js 迭代基本的 for 循环 https stackoverflow com questions 11924452 handlebar js iterating over for basic lo
  • 使用 Node.js 的前端 javascript 框架 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Ember 克隆模型创造新纪录

    我想克隆当前正在编辑的模型 我发现了几种几乎有效的方法 但两者都不完美 1 model get data attributes 获取除驼峰式形式的关系之外的所有属性 生成一条新记录 但关系当然丢失了 2 model serialize 生成
  • Ember-数据引导模型对象

    当使用非远程 AJAX 调用的现有 JSON 引导 Ember 数据模型对象时 我是否必须进行以下 2 个调用 App store load App Account data var account App store find App A
  • 围绕活动的 {{linkTo}} 创建一个
  • 最干净的获取方式是什么 li class active 对于以下 Ember 应用程序中的活动页面 索引 html app js App Ember Application create App Router map function th
  • emberjs:在应用程序初始化()之后添加路由

    我在使用 emberjs 构建基于路由器的应用程序时遇到了以下问题 我的应用程序的结构简化如下 var App Em Application create App ApplicationController Em Controller ex
  • 如何在重新渲染 Ember 视图的一部分时随时运行代码?

    我的目标是拥有一个类似 Facebook 的按钮 可以有条件地出现在 Ember 视图中 我的模板是 if condition Click Like div class fb like fb edge widget with comment

随机推荐