0

这段代码** http://jsfiddle.net/wagenet/ACzaJ/8/ **几天前还在工作,当我今天回到它时,它抛出{"error": "Please use POST request"},当我单击添加按钮 此外,jsfiddle editor.js 总是在这一行抛出异常: function stop(){cc = stop; 抛出 StopIteration;}; 有谁知道这个问题的原因。

非常感谢

更新

请向下滚动查看我发布的许多更新作为补充彼得最初答案的答案。

4

2 回答 2

2

这里有很多问题。

  1. 你实际上并没有使用 1.0 pre,你使用的是 master。
  2. 在master中,您需要调用App.initialize()事件侦听器才能工作
  3. 您不应该在按钮上设置{{action}}助手。表单视图已经有一个方法,当表单上发生事件时submit会自动调用该方法。submit
  4. 有问题valueBinding。它似乎是一个 Ember 错误,因为如果您删除id="new-todo".
  5. 解决所有这些问题后,我还看到了 Metamorph 错误。我没有尝试比这更远的调试,因为您现在可能应该只使用 1.0 pre。
于 2012-08-27T23:48:12.703 回答
0

更新 1

根据下面@Peter Wagenet 的建议,表单现在将条目或输入记录到控制台,但它不会显示在 jsfiddle 的结果部分,而是显示在 jsfiddle 结果部分或页面上仍然是这个错误 {"error": "请使用 POST 请求"}

** http://jsfiddle.net/ACzaJ/18/

更新 2

在这个小提琴http://jsfiddle.net/ACzaJ/19/中,我通过添加 event.preventDefault(); 成功消除了这个错误 {"error": "Please use POST request"}; Todos.TodoFormView 中的提交操作。这允许我们使用任意视图方法作为操作处理程序。

现有问题是表单的输入仅显示在控制台上,而不显示在 jsfiddle 结果部分,虽然结果部分没有显示错误,但更新后的 fiddle 的控制台中出现了一个新错误:

未捕获的错误:无法对不在 DOM 中的 Metamorph 执行操作。

终于解决了

我需要注释掉 App.initialize() 才能按预期工作,另见彼得回答的第 2 点。这是工作小提琴** http://jsfiddle.net/ACzaJ/20/

类似于上面的工作小提琴,但为文本字段指定了 id="new-todo",因此这意味着 ember 没有影响 'id' 的错误,请参见 Peter 的第 4 点。http://jsfiddle.net/ACzaJ/21/

我不知道为什么使用 App.initialize() 会使应用程序无法工作,但我的猜测是,App.initialize 可以与其他部分一起使用,例如用于路由的路由器、ApplicationController 和 ApplicationView 中的 {{outlet}}车把,我不需要这个小提琴。

终于终于彻底解决了

** http://jsfiddle.net/tQWn8/, ** http://jsfiddle.net/tQWn8/1/(第二个链接使用指定的id)。我能够让它与 App.initialize 一起工作。但是我必须声明上面列出的所有组件并将路由器传递给 App.initialize,就像这个 App.initialize(router)。如果你不这样做,那么你会得到旧的错误

未捕获的错误:无法对不在 DOM 中的 Metamorph 执行操作。

有关更多信息,请参阅 emberjs 初始化函数的文档:

http://docs.emberjs.com/?#doc=Ember.Application&method=initialize&src=false

非常感谢 Peter Wagenet 的指导

于 2012-08-30T10:09:43.553 回答