gpt4 book ai didi

javascript - Ember.JS 和 ember-data 在使用路由器时抛出神秘的错误消息

转载 作者:行者123 更新时间:2023-11-30 13:16:50 25 4
gpt4 key购买 nike

我正在为 Ember 应用程序开发保存的搜索功能,总体思路是在执行搜索后,您可以选择输入搜索的短名称并将其保存到 localStorage并稍后从下拉列表中检索它,同时还能够与其他用户共享当前 URL 并让他们看到相同的搜索。

这通过组合 Ember Router 处理 URL 中的搜索参数和处理用户点击“保存”的 View ( View 包含在 fiddle 中,但不能由于不包含模板而运行 -- 见下文)。

每当我运行该应用程序时,我都会收到以下错误:

Uncaught TypeError: Cannot call method 'set' of undefined 

您可以在下面列出的 fiddle 中看到跟踪,但它似乎源于 ember-data 中的 Controller 存储注入(inject)。不幸的是,我对 Ember[-data] 的了解还不够深入,无法了解它与应用程序其余部分的关系。

我已经获取了应该独立工作的应用程序的相关部分并在 JSFiddle 中运行它们,但仍然会导致相同的错误。 fiddle 位于 http://jsfiddle.net/fetcU/ .目前,该 fiddle 中没有 Handlebars 模板或任何东西,因为它们不会导致问题。

在引入 Router 之前,localStorage 适配器和其他部分独立工作良好,因此它可能与现在由 Checklist.initialize() 运行的代码有关(在添加路由器之前这不是必需的)。

我已经将其与其他类似的项目和示例进行了比较,尤其是那些为 ember-data 提供的项目和示例,但我并不完全清楚我在这里做错了什么。如果有任何见解,我将不胜感激!

最佳答案

第一件事:当您创建带有路由器的应用程序时,您不必创建 Store、Controllers 和 Views 的实例。当调用 App.initialize() 时,ember 会为你完成实例化和注入(inject)。

然后,您将可以访问:

  • Controller ,通过路由器(在 connectOutlets() 中),通过 router.get(xxxController),其中 xxx 是例如应用程序(用于访问基本 Controller ),或 savedSearch 用于访问您的 savedSearchController。
  • 商店,通过调用 router.get('store') 从路由器
  • 通过调用 this.get('controller') 来自 xxxView 的 xxxController,或来自带有 view.controller 的模板
  • 来自 Controller 的路由器,通过调用 this.get('target')

好吧,我让你试试修改代码。当你再次陷入困境时让我来 :)

关于javascript - Ember.JS 和 ember-data 在使用路由器时抛出神秘的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11719219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com