我正在为Ember应用程序保存搜索功能,一般的想法是,在进行搜索后,您可以选择输入搜索的短名称并将其保存到localStorage
并检索它稍后从下拉列表中,同时还能够与其他用户共享当前URL并让他们看到相同的搜索。
这是通过组合URL中的Ember Router
处理搜索参数和处理用户点击“保存”的视图(视图包含在小提琴中,但无法像没有包含模板 - 见下文。
每当我运行应用程序时,都会出现以下错误:
Uncaught TypeError: Cannot call method 'set' of undefined
您可以在下面列出的小提琴中看到跟踪,但它似乎源于ember-data中的控制器存储注入。不幸的是,我对Ember [-data]的了解并不足以让我知道这与其他应用程序的关系。
我已经采用应该独立工作的应用程序的相关部分并在JSFiddle中运行它们,但是仍然会导致相同的错误。小提琴位于http://jsfiddle.net/fetcU/。目前没有把手模板或其他任何东西,因为它们没有导致问题。
localStorage
适配器和其他部分在引入路由器之前可以独立工作,因此它可能与Checklist.initialize()
正在运行的代码有关(直到路由器是必需的)添加)。
我把它与其他类似的项目和例子进行了比较,特别是那些给出了ember-data的项目和例子,并不完全清楚我在这里做错了什么。我很感激任何见解!
答案 0 :(得分:3)
首先:当您使用路由器创建应用程序时,您不必创建Store,Controllers,Views的实例。当调用App.initialize()时,ember会为你进行实例化和注入。
然后,您将有权访问:
好吧,我让你尝试修改代码。现在让我再次陷入困境:)
答案 1 :(得分:0)
你试过让你的控制器上课吗?因此,请使用Checklist.SavedSearchController。而不是Checklist.savedSearchController。