2012-08-16 43 views
2

http://jsfiddle.net/ACzaJ/7/ 这小提琴中存在以下问题:Emberjs表单,提交功能和动作助手错误

  1. 当您点击:“明确的完成按钮”,你将得到错误:

    Uncaught Error: assertion failed: Target <Ember.View:ember116> does not have action clearCompletedTodos 
    
        And this line generates that error: 
    <button {{action clearCompletedTodos target="Todos.todosController" }} > 
         Clear Completed Todos 
        </button> 
    
  2. 我正在试验两种不同的提交功能,每次评论一个试一下:

    2a。当我点击'添加'按钮,当使用第一个提交功能通过注释第二个时,没有新的待办事项被添加并且没有错误。这没什么大事。

    2b。当我注释掉先提交功能,并使用第二提交功能,点击添加,将引发以下错误:

    Uncaught TypeError: Cannot call method 'createTodo' of null. 
    

我怎样才能使这个待办事项应用程序,运行以及添加和明确的待办事项。由于

UPDATE

问题1现在由@pauldechov解决。但问题2a和2b尚未解决。 jsfiddle链接已更新。谢谢@pauldechov。这里

更新2

由彼得提供的解决方案以后有问题,彼得在这里解决的新问题:

Previously working emberjs1.0-pre form on jsfiddle returns "error": "Please use POST request"

+1

App.todoController是一个错字(原始定义)。应该像所有的引用一样App.todosController。 – dechov 2012-08-17 01:39:03

+0

@pauldechov谢谢。这个固定的问题1,但问题2a和2b中的问题仍然存在。你对这些有什么建议吗?再次感谢。 – brg 2012-08-17 07:29:32

回答

5

首先,它看起来像你给你的TodoView其中有空格的id。这id需要是一个有效的HTML标识,所以肯定会导致一些问题。其次,submit函数正在为您的实例TodoFormView寻找值。但是,该值在您的TodoView实例中定义。你需要在两者之间建立一个绑定。

现在我通过摆脱TodoView而简化了一些事情,只是使用标准TextField。此外,您的remaining功能需要更改为get('length'),而不是get(length)。另外,复选框API已经从一些较旧的示例改变,参见http://docs.emberjs.com/#doc=Ember.Checkbox

下面是更新小提琴:http://jsfiddle.net/wagenet/ACzaJ/8/

+0

谢谢,我很感激。 – brg 2012-08-17 15:38:42

+0

而不是使用此解决方案中提供的jsfiddle(以后有问题),请参阅如何在Peter的帮助下解决这些问题** http://stackoverflow.com/questions/12150929/previously-working-emberjs1-0-预外形上的jsfiddle-返回错误,请使用 – brg 2012-08-29 11:01:59