在最新的 Ember 中,如何仅使用模型的 id/名称链接到路由,而不是在链接页面中提供其所有属性?

2024-01-04

从 Ember 1.0-pre2 转换到最新的 master 时我遇到了问题(43354a98 https://github.com/emberjs/ember.js/commit/43354a98a5e441095132b1407f3e1f4809326802)和新路由器,即——

如果我有一条仅加载一堆记录的名称和 ID 的路线,并尝试将每条记录链接到另一条应显示完整模型的路线,那么当我到达新路线时,永远不会加载新模型,名称和 ID 是唯一可用的属性。

示例代码:

App.Router.map(function() {
  this.route("index");
  this.resource("birds");
  this.resource("bird", {
    path: "/birds/:bird_id"
  });
});

App.BirdsController = Ember.ArrayController.extend({
  birds: [
    {
      name: "Pigeon",
      id: "b.15"
    }, {
      name: "Chicken",
      id: "b.133"
    }, {
      name: "Turkey",
      id: "b.126"
    }, {
      name: "Ostrich",
      id: "b.4"
    }, {
      name: "Barn Owl",
      id: "b.47"
    }
  ]
});

App.BirdRoute = Ember.Route.extend({
  model: function(params) {
    return App.Bird.find(params.bird_id);
  }
});

{{#each bird in birds}}
  <li>{{#linkTo "bird" bird}}{{bird.name}}{{/linkTo}}</li>
{{/each}}

其中 App.Bird.find() 运行一些 XHR 以从一组远程 API 构建 Ember.Object(不使用 ember-data)。仅在本示例中,鸟类列表被硬编码到控制器中,以简化问题;在我的实际应用程序中,该列表来自远程 API。

我看到的行为是,如果您从 /birds 开始并单击其中一个链接,路由器将转换为“bird”并且您到达 /#/birds/b.5,但 App.Bird.find() 是从未调用过,页面上唯一的数据是“name”和“id”。但是,如果您随后重新加载页面,它会调用 App.Bird.find() 并正确构建并显示模型。

是否有某种方法可以强制从 URL 中的 ID 进行反序列化,或者仅将 ID 传递给 linkTo 而不是它假定完整的对象?我有一个类似的实现,可以在旧路由器上正常工作。


似乎是model钩子App.BirdRoute使用导航时永远不会被调用{{#linkTo}}...也许这是因为使用{{#linkTo}}您正在将一个对象传递给来自birds路线和余烬认为你不需要打电话model因为它认为 id 已经被反序列化为对象。这似乎是有道理的,因为model当您重新加载页面时被调用。

我用的是setupController挂机呼叫你的App.Bird.find()方法并将结果传递到控制器中。这可以通过直接 URL 或通过{{#linkTo}}点击。如果由{{#linkTo}}帮助链接setupController the model参数将是bird对象通过{{#linkTo}}帮手。如果直接从 URL 调用,则返回值model钩子将被传递到setupController as the model范围。

这是一个 JSFiddle 示例 http://jsfiddle.net/cteegarden/TULVH/5/

具有可访问 URL 的示例 http://jsfiddle.net/cteegarden/TULVH/5/show/

App.BirdRoute = Ember.Route.extend({
  model: function(params) {
    return {id: params.bird_id};
  },
  setupController: function(controller, model) {
    var bird_model = App.BirdTest.find(model.id);
    controller.set("content", bird_model);
  }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在最新的 Ember 中,如何仅使用模型的 id/名称链接到路由,而不是在链接页面中提供其所有属性? 的相关文章

  • 您在一次渲染中修改了 *** 两次

    升级到 1 13 后 出现此异常 但我不知道问题出在哪里 我也找不到任何有用的资源来解决我的问题 我在另一个计算属性中设置的属性会发生这种情况 但这个属性肯定只被调用一次 我创建了一个 jsbin 示例 http emberjs jsbin
  • 如何将子记录添加到现有父记录中?

    我一直在 Google 和 Stack Overflow 上搜索有关这个主题的某种提示 但信息充其量是分散的 我正在尝试创建一个新的子记录 Comment 并将其保存到现有的父记录 Post 我使用的是 Ember Model 而不是 Em
  • 在 Codeigniter 中使用/嵌入 Ember js

    我即将开始开发一个 Web 应用程序 使用 Ember js 作为前端技术 使用 Codeigniter 作为后端 我遇到的问题是如何在 codeigniter 中嵌入或使用 ember js 可以通过 Web 服务从 codeignite
  • Ember JS 过渡到嵌套路由,其中​​所有路由都是视图中的动态段

    我们正在使用 EmberJS 编写一个应用程序 然而 我们对这个框架仍然陌生 我们很难解决一些看似简单的问题 模型非常简单 有 3 个模型 Queue Task 和 Image 我们对所有路由使用动态 URI 段 并且这些模型的路由嵌套在以
  • 在 Ember 中将模型属性插入 Img 元素 URL

    我有一个模型image id财产 我有一个包含图像元素的模型视图 我需要将 id 插入图像元素的src属性来完成图像的 URL 以便我有效地执行此操作 img src 我的第一次尝试使用了 Handlebars 助手 img src 但这也
  • 如何将 hashbang url 更改为历史 API

    我正在使用 ember1 0 rc3 我想将 hashbang url 更改为正常的 url 格式 即 www site com admin page1 到 www site com admin page1 更改 我在应用程序路由器中使用位
  • 在哪里放置固定装置?

    我应该在使用 ember cli 生成的 Ember JS 应用程序中的哪里定义固定装置 我尝试过很多地方 例如app js并在一个名为 fixtures 的文件夹中 经过一番挖掘后我发现改变Ember MODEL FACTORY INJE
  • 如何在 ember.js 路由中显示模型的非 id 字段的字符串值?

    我有一个自定义字段 允许您过滤模型列表 在某些 ArrayController 上 PersonApp SearchField Ember TextField extend keyUp function e var search this
  • 将 monaco 编辑器集成到 ember 辛烷中

    我尝试整合摩纳哥代码 https github com Microsoft monaco editor编辑到我的 ember 辛烷应用程序中 目前我正在使用 ESM 导入样式并确认手册 我安装了 webpack 加载器插件并将其集成到我的
  • 绑定 Ember TextField 中的计算属性

    我正在尝试将我的数据模型绑定到 Ember js 中的文本字段 该模型有一个表示货币值的字段 例如 1 000 50 然后用户可以更改该值 Ember 接收数字 1000 50 形式的数据 非货币格式 我将视图绑定到具有良好格式的计算属性
  • Ember.js:过渡到路由,然后到动态段

    我有一个设置有帐户和 account account id 选项的路由器 当用户登陆我的应用程序的索引页面时 我将它们转换到帐户路径 Social Router map function this resource accounts fun
  • 有没有办法在 ember 商店中的任何 ember 模型更改上设置观察者?

    首先 我使用的是ember 2 我正在请求后端 它返回一些数据 然后 我将这些数据推送到 ember 存储中的模型 问题是我想在更新此模型时执行一些操作 那么 有没有办法在店里观察模型呢 先感谢您 findAll返回实时数组 因此我们可以为
  • 如何使用 ember.js 进行类似过滤

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

    我有一个视图 其中可能有大量项目供用户滚动 我想实现无限滚动以实现内容的渐进加载 看起来有些人已经做了分页 https stackoverflow com questions 8778259 ember js rendering large
  • Ember CLI 中的把手助手语法

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

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

    当使用非远程 AJAX 调用的现有 JSON 引导 Ember 数据模型对象时 我是否必须进行以下 2 个调用 App store load App Account data var account App store find App A
  • Ember 数据保存方法,创建与更新

    我不明白 Ember 如何确定是否应该更新或创建记录 我认为它是基于 ID 或商店条目 但它似乎是其他东西 代码示例阐明了 this returns the user without making an api call currentUs
  • 在路由之间传递参数

    Ember 中将参数从一个路由发送到另一个路由的 适当 方式是什么 例如 我有两条这样定义的路线 this resource activities path activities on date function this route ne
  • ember-data:如何制作正在保存/已保存的闪存消息

    为了在我的应用程序顶部制作一个黄色的 正在保存 已保存 指示符消息 我希望有一个布尔属性来指示当前是否有任何余烬数据记录正在运行 我试过这个 App store DS Store create isSaving gt for record

随机推荐

  • html5画布中的“擦除”

    我在 html5 canvas 中有一个涂鸦应用程序 我正在尝试找出实现橡皮擦控件的最佳方法 第一个冲动只是让橡皮擦绘制背景颜色 白色 但这是有问题的 因为如果用户将图像或另一层移动到他们之前擦除的位置 他们会在擦除的位置看到白色绘图 理想
  • FetchXml 中的左连接?

    如何使用 FetchXml 进行左连接 考虑一个简单的 SQL 查询 如下所示 select person name address city from person left join address on person addressi
  • QToolTip 中包含的变量不会自动更新

    我在 QLineEdit 上有一个 QToolTip 并且工具提示包含文本中的变量 工具提示代码包含在 init h 文件中 问题是工具提示中的变量值在程序运行中发生更改时不会自动更新 例如 我将鼠标悬停在行编辑上 值会显示在工具提示中 我
  • 在 JavaScript 中为属性添加别名

    我认为这很简单 有没有一种简单的方法来添加属性的辅助名称 我认为这是特定于字符串的 我不确定 即 c length this line pseudo code hello world length returns 11 hello worl
  • Scala Slick 2 加入多个字段?

    如何在多个字段上进行连接 如下例所示 val ownerId 1 val contactType 1 val contact for t c lt ContactTypes leftJoin Contacts on id typeId ow
  • XCode 4 与 Git/Github 无法提交图像

    源代码文件已提交 但图像未提交 错误信息 错误 pathscpec 与 git 已知的任何文件都不匹配 XCode 发行说明提到现在提交二进制文件存在问题 他们建议 在收到该错误后 您应该转到命令行并执行 git commit
  • JavaScript同步执行

    我是 javascript 新手 正在尝试使用滑块 我的问题类似于以下问题jquery attr 带回调 https stackoverflow com questions 4040712 jquery attr with callback
  • 在 Azure SQL DB 中启用和配置 FILESTREAM

    如何在 AZURE SQL DB 中存储 PDF 文件 上述要求我在 Azure SQL DB 上启用和配置 FILESTREAM 目前 当我运行创建表查询时出现此错误 Msg 40517 Level 16 State 1 Line 28
  • 数据列表分页?

    我有一个包含动态内容的数据列表 我需要启用对此数据列表的分页 我在 Visual Studion 2010 下使用 asp net c 请向我发送如何启用对数据列表分页的代码 这是数据列表的代码
  • 第一次偶然异常发生在 XMLSerializer 的构造函数中[重复]

    这个问题在这里已经有答案了 可能的重复 XmlSerializer 在构造函数中给出 FileNotFoundException https stackoverflow com questions 1127431 xmlserializer
  • Github - 分叉一个私人仓库

    我已被添加到一个拥有一些私有存储库的组织 我需要向他们发送包含一些更改的拉取请求 但我不知道是否可以 我在 GitHub 上没有付费帐户 那么如何分叉该私有存储库来修改和发送拉取请求 正如 如果我将其他人的私人 Github 存储库分叉到我
  • “VkVertexInputBindingDescription”中“绑定”的目的是什么?

    https www khronos org registry vulkan specs 1 0 man html VkVertexInputBindingDescription html https www khronos org regi
  • 记录 WCF 消息大小

    我正在使用 WCF 通过网络发送一些 Linq 对象 我想使用消息日志记录或跟踪来记录消息大小 然而我不想 或者没有能力使用配置文件来设置它 我正在努力弄清楚如何以编程方式执行此操作 我不在乎这是否发生在客户端主机上 我控制两者 有人有这样
  • Perl Cwd::cwd 和 Cwd::getcwd 函数有何不同?

    问题 有什么区别Cwd cwd and Cwd getcwd一般来说 在 Perl 中 不考虑任何特定平台 为什么 Perl 两者兼而有之 预期用途是什么 在什么场景下应该使用哪一种 我们将不胜感激示例用例 这重要吗 假设我不混合它们 选择
  • 安全 Rust 中可能存在未定义行为吗?

    有没有什么方法可以在不使用 Rust 的情况下实现未定义的行为unsafe 当然 此类行为可以由第三方库包装在 安全 函数中 因此我们假设我们仅使用标准函数 绝对可以 但是任何此类情况都是 Rust 或标准库的错误 https github
  • 如何获取列表中列表的索引?

    list word1 word2 word3 print list index word1 这很好用 但我如何获得这个的索引 list word1 word2 word3 word4 word5 word6 print list index
  • 重新启动auditd服务会出现依赖错误

    我正在尝试为 docker 守护进程配置审核 如下所示 将下面的行添加到 etc audit audit rules file w usr bin dockerd k docker 然后 使用以下命令重新启动审核守护程序 service a
  • 使用 IB 调整大小构建自定义 UITableViewCell?

    我已确保单元格的自动调整大小蒙版允许灵活的宽度 但当设备旋转时 单元格的大小不会调整 我还验证了表格视图已调整大小 问题直接出在单元格上 这是我用来创建单元格的代码 if cell nil Load the top level object
  • 带系统函数的 C 程序中的大括号扩展

    我尝试了命令 cat tmp file 1 3 gt newFile 并且工作完美 但是当我编译并执行以下c程序时 include
  • 在最新的 Ember 中,如何仅使用模型的 id/名称链接到路由,而不是在链接页面中提供其所有属性?

    从 Ember 1 0 pre2 转换到最新的 master 时我遇到了问题 43354a98 https github com emberjs ember js commit 43354a98a5e441095132b1407f3e1f4