如何使用 EmberJS 在路由中加载 ownTo/hasMany 关系

2023-12-21

在我的 Ember JS 应用程序中,我显示了一个约会列表。在约会控制器的操作中,我需要获取约会所有者,但所有者始终返回“未定义”。

我的文件:

模型/appointment.js

import DS from 'ember-data';

export default DS.Model.extend({
    appointmentStatus: DS.attr('number'),
    owner: DS.hasMany('person'),
    date: DS.attr('Date')
});

模型/person.js

import DS from 'ember-data';

export default DS.Model.extend({
    name: DS.attr('string')
});

模板/约会列表.js

{{#each appointment in controller}}
    <div>
        {{appointment.date}} <button type="button" {{action 'doIt'}}>Do something!</button>
    </div>
{{/each }}

控制器/appointmentlist.js

export default Ember.ArrayController.extend({
    itemController: 'appointment'
});

控制器/appointment.js

export default Ember.ObjectController.extend({
    actions:{
        doIt: function(){
            var appointment = this.get('model');
            var owner = appointment.get('owner'); //returns undefined
            //Do something with owner
        }
    }
});

现在,我知道我可以将所有者财产更改为owner: DS.hasMany('person', {async: true}),然后处理从返回的承诺appointment.get('owner');,但这不是我想要的。 我发现如果我这样做{{appointment.owner}}或这个{{appointment.owner.name}}在约会列表模板中,所有者记录是从服务器获取的。所以我猜 Ember 不会加载关系,除非它们在模板中使用。

我认为解决我的问题的方法是使用appointmentlists 路由来获取belongsTo 关系中的记录。但我不知道怎么做。

也许是这样的?

路线/约会列表.js

export default Ember.Route.extend({
    model: function() {
        return this.store.find('appointment');
    },
    afterModel: function(appointments){
        //what to do
    }
});

EDIT

我这样做了:

路线/约会列表.js

export default Ember.Route.extend({
    model: function() {
        return this.store.find('appointment');
    },
    afterModel: function(appointments){
         $.each(appointments.content, function(i, appointment){

                var owner= appointment.get('owner')   
         });
    }
});

它有效,但我不喜欢这个解决方案......


您仍然异步加载这些记录,因此如果您足够快,您仍然可能会遇到未定义的情况。最好从 afterModel 挂钩返回一个承诺,或者只修改模型挂钩来完成这一切。

model: function() {
  return this.store.find('appointment').then(function(appointments){
    return Ember.RSVP.all(appointments.getEach('owner')).then(function(){
      return appointments;
    });
  });
}

or

model: function() {
  return this.store.find('appointment');
},
afterModel: function(model, transition){
  return Ember.RSVP.all(model.getEach('owner'));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 EmberJS 在路由中加载 ownTo/hasMany 关系 的相关文章

  • 与查询参数一起使用时,Ember .observe() 返回两次回调

    http jsbin com vowup 2 http jsbin com vowup 2 如果我单击更改为随机 程序将登录控制台两次 由于某些奇怪的原因 将修订变量设置为字符串时它可以正常工作 但对于数字或任何其他类型的变量会记录两次 将
  • 在 #each 内渲染视图

    每当我尝试在 each 块内渲染视图时 我都会收到一条 PrecompilationError 消息 Compiler said Error each doesn t match view Example each posts view A
  • 使用 EmberData 在本地存储中缓存远程数据

    我有一个关于使用 Ember 加载和缓存远程对象的问题 我正在开发一个 Ember 应用程序 它通过 REST API 使用服务器端存储 一些获取的数据很少发生变化 因此每次应用程序加载时都从服务器获取数据是不必要的 但这对于需要离线工作并
  • 客户端 Javascript 应用程序 - 不带哈希标签的 url 路由

    我正在使用最新版本的 Ember js 开发一个新的仅客户端应用程序 有一个 PHP 页面可以构建脚本 CSS 模板文件等 并将其全部传递到 index php 中 我使用 htaccess 指令 以便所有请求都重写到 index php
  • Emberjs 将多个控制器加载到一个控制器中

    SCENARIO我目前有一个IndexRoute 我想将另外 3 个控制器加载到其中 另外 3 个控制器称为Sports News Business 我阅读了 embersjs 文档 它指出您需要实现renderTemplate钩入Inde
  • 同时使用 localStorage 和 REST 远程服务器的数据层架构

    任何人对于如何实现同时使用 localStorage 和 REST 远程存储的数据持久层都有任何想法或参考 某个客户端的数据存储在 localStorage 中 使用 ember data indexedDB 适配器 本地存储的数据与远程服
  • 未捕获错误:找不到从“ui/app”loader.js 导入的模块“ember”:164

    我使用以下命令构建并提供我的 ember 应用程序 ember build ember serve 两者都按预期工作 然后我转到以下 localhost 4200 URL 查看应用程序 并在 javascript 控制台中看到以下错误 Un
  • Ember:error.messages 在保存时不显示服务器错误

    当尝试创建新记录时 errors messages不渲染为文档中描述 http emberjs com api data classes DS Errors html 也就是说 控制台确实呈现了错误Error The backend rej
  • 收到 404 时模型的 EmberJS 路由

    同样的文本也在 EmberJS 讨论区中开放 我有以下路线 App IndexCrmPersonEditRoute Ember Route extend model function params var person this store
  • 如果 POST 响应仅包含 ID,如何将数据保存到我的 Ember 存储?

    Ember 数据期望我的服务器在每次成功后返回完整的对象POST 但是 我的 API 只返回一种元对象 其中包含id 当 Ember 收到此对象时 记录中的现有数据将被删除 除了id 例如 当我这样做时 var asset App Asse
  • 加载 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.js 进行类似过滤

    我在 ember pre 1 0 中有一个简单的 ArrayController 发现如果过滤器找到给定属性的完全匹配 我可以削减列表 但我似乎找不到的是如何使用过滤器进行 like 查询 如果我搜索包含用户的数组 下面的内容将起作用 fi
  • Ember.js 数组作为模型的属性

    干杯 我有一些模型 它的一个属性是一个数组 但由于某些原因 我在服务器上使用 mongoDB 并且它是嵌入式模型和 ember data 的问题 我不能做这样的事情 App Foo DS Model extend numbers DS ha
  • 使用 ember.js 模板的 Bootstrap Popovers

    我正在尝试使用引导程序弹出窗口 http twitter github io bootstrap javascript html popovers使用 EmberJS 这样弹出窗口的内容将是 ember handlebars 模板 带有绑定
  • Ember 克隆模型创造新纪录

    我想克隆当前正在编辑的模型 我发现了几种几乎有效的方法 但两者都不完美 1 model get data attributes 获取除驼峰式形式的关系之外的所有属性 生成一条新记录 但关系当然丢失了 2 model serialize 生成
  • 如何使用 Ember.run.debounce 实现正确的关闭

    我尝试使用 Ember run debounce 仅在有许多子视图触发保存时触发父视图或控制器上的保存操作 问题似乎是闭包 匿名函数 但我找不到在这种情况下在 Ember 中实现去抖的最佳方法的任何示例 这是一个概述该问题的 jsbin 任
  • 使用 Ember + Handlebars 在运行时动态选择视图

    我正在使用 Ember Ember Data 和 Handlebars 来显示包含多种不同类型模型的时间线 我当前的实现虽然运行正常 但似乎可以通过约定和助手来大幅改进 但是 我不知道如何使用已经定义的模板 这就是我所拥有的 view Ap
  • create() 时不会调用观察者

    我有一个Ember Mixin它观察到它的属性之一 这里bar baz 我扩展了这个 Mixin 并设置了bar baz in the create 参数 但我的观察者没有被调用 这是我的代码 App FooMixin Ember Mixi
  • 为车把/余烬定义模板内的数组?

    我在 ember 应用程序中有一个车把模板 它接受一个数组 我目前像这样声明数组 模板 Gd radio input content radioContent value blue JavaScript App IndexControlle
  • emberjs:在应用程序初始化()之后添加路由

    我在使用 emberjs 构建基于路由器的应用程序时遇到了以下问题 我的应用程序的结构简化如下 var App Em Application create App ApplicationController Em Controller ex

随机推荐

  • 在 Yii 中,有没有办法使用 CActiveForm 验证表格输入?

    情况 我使用了 Yii 网站上的 wiki 文章 收集表格输入 http www yiiframework com doc guide 1 1 en form table 以如下为例 我不认为我需要针对多个模型验证传统意义上的表格输入 我只
  • 与静态库的链接不等于与其对象的链接

    Problem 与静态库链接时生成的固件映像与与直接从静态库中提取的对象链接时生成的固件映像不同 两个固件映像都没有错误地链接并成功加载到微控制器上 后一个二进制文件 与对象链接 按预期成功执行 而前一个二进制文件 链接到静态库 则不然 编
  • URLWithString:返回 nil

    这可能很容易 但我似乎不明白为什么URLWithString 在这里返回零 localisationName is a arbitrary string here NSString webName localisationName stri
  • jquery隐藏预加载[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 这是我的页面http equipe94 com 2009e html http equipe94 com 2009e h
  • 为什么这个任务提前返回?我做错了什么吗?

    我正在尝试设置一群具有最小耦合的工作人员 但我想使用 C async和任务 并非所有任务都是纯异步的 有些任务是完全同步的 这样做的动机是我想创建一些执行业务逻辑的简单方法 并使用System Threading Tasks TaskAPI
  • 检测 Mac OS X 上的调试器

    我试图检测我的进程是否正在调试器中运行 在 Windows 中有很多解决方案 在 Linux 中我使用 ptrace PTRACE ME 0 0 0 并检查其返回值 我没有设法在 Mac OS X 上执行相同的基本检查 我尝试使用 ptra
  • 请解释一下使用 std::ignore 的这段代码

    我正在阅读有关的文档std ignore http en cppreference com w cpp utility tuple ignore来自 cppreference 我发现很难掌握这个对象的真正目的 并且示例代码并没有很好地说明这
  • 如何使用 RxJS 显示“用户正在输入”指示器?

    我了解一点 BaconJS 但现在我尝试通过创建 用户正在输入 指示器来学习 RxJS 这很简单 可以用两个简单的规则来解释 当用户打字时 指示器应该立即可见 当用户停止键入时 指示器应该仍然可见 直到用户最后一次键入操作后 1 秒 我不确
  • 矩阵的行主布局与列主布局

    在编程密集矩阵计算时 是否有任何理由选择行优先布局而不是列优先布局 我知道 根据所选矩阵的布局 我们需要编写适当的代码来有效地使用缓存以达到速度目的 行主布局看起来更自然 更简单 至少对我来说 但是像 LAPACK 这样用 Fortran
  • 使用 Oracle 11g 的 Oracle 开发人员虚拟机

    I found here http www oracle com technetwork community developer vm index html带有 Oracle DB 和 Oracle Linux 的 VirtualBox 的
  • 编辑RefineryCMS 2.1 Menu Presenter以操作dom_id css和其他属性

    我目前正在尝试从 gem 版本更新现有的 RefineryCMS 应用程序 以便我可以同时添加 bootstrap 3 gem refinerycms gt 2 0 10 to gem refinerycms gt 2 1 0 在删除过时的
  • IO异常:Oracle升级到12g后出现Oracle Error ORA-12650

    在我们的 Oracle DB 从 11g 升级到 12g 后 我们得到了下面的堆栈跟踪 Io exception Oracle Error ORA 12650 我该如何解决这个问题 2015 10 26 14 59 36 319 RMI T
  • 需要一个插入行并返回 ID 的存储过程

    我尝试编写一个存储过程 首先将新记录插入表中 然后返回该新记录的 id 我不确定这是否是实现这一目标的正确方法和最佳方法 ALTER PROCEDURE dbo spAddAsset Name VARCHAR 500 URL VARCHAR
  • minitest - 模拟 - 期望关键字参数

    当我想验证模拟是否发送了预期的参数时 我可以这样做 mock expect fnc nil a b 但是 如果我想模拟的课程看起来像这样 class Foo def fnc a b end end 我如何模拟它并验证传递的值a b 下面是我
  • 判断一个数是完美数还是素数

    问题是 编写一个函数来判断一个数是素数还是完全数 到目前为止 我已经首先完成了完美的部分 这就是我所拥有的 include
  • Excel 如何比较 2 列范围

    我正在尝试比较 Excel 中的两组列范围 我知道标准比较公式 Eg A1 E1 我正在寻找的是以下公式的替代品 AND A1 E1 B1 F1 C1 G1 由于列数很大 我在想是否可以使用单元格范围 比 Chronocidal慢一点 只是
  • 星际争霸、帝国时代等即时战略游戏的协议是什么样的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对这些类型的游戏的协议 和游戏循环 如何工作感兴趣 任何指示或见解表示赞赏 我猜想主循环会有一个世界状态 每秒会前进几个 滴答声 但
  • 如何阻止 gke-metadata-server 继续生成此日志?

    我创建了一个部署 意味着在启用工作负载身份的情况下将消息从 pubsub 插入到 bigquery 云日志不断向我发送此类日志 insertId test jsonPayload message rpc id test computeMet
  • 是否有关于 Dagger 在注入依赖项时何时回退到反射的文档?

    我的团队在我们的 Android 应用程序中采用了 Dagger 进行依赖注入 我必须说到目前为止我们很喜欢它 然而 我们希望确保我们有效地使用它 我想知道是否有人可以解释或者是否有任何文档解释 Dagger 回退到反射来注入依赖项的情况
  • 如何使用 EmberJS 在路由中加载 ownTo/hasMany 关系

    在我的 Ember JS 应用程序中 我显示了一个约会列表 在约会控制器的操作中 我需要获取约会所有者 但所有者始终返回 未定义 我的文件 模型 appointment js import DS from ember data export