2014-04-12 30 views
0

我在灰燼JS一個形式,我想:Ember.js服務器端表單驗證顯示

1.顯示緊挨在錯誤的每個字段的字段中的錯誤;

2.在窗體頂部顯示任何常規錯誤;

3.這些錯誤在用戶更正表單時仍然存在。

編輯:JSBin here

我對形式的下模板:

{{#if isSaving}} 
    <p>Saving Record</p> 
{{/if}} 
{{#if isError}} 
    <p>There was an error saving the record</p> 
    Base errors({{errors.base}}) 
{{/if}} 
<form {{action 'create' this on='submit'}}> 
    <p>Title: {{input type="text" value=title}}</p> 
    <p>Title Errors( {{errors.title}} )</p> 
    <p>Body: {{textarea value=body}}</p> 
    <button>Create</button> 
</form> 

現在我的服務器返回以下

{"errors":{"body":["can't be blank"],"title":["should begin with a capital letter"],"base":["General error message here"]}} 

errors.title以上返回一個對象。我怎樣才能從中得到消息。

當用戶開始輸入時,對象消息被清除。

isError從來沒有似乎着火。

我在做什麼錯?

回答

0

錯誤是一個數組,並在它們之間迭代的正確方法如下:

{{#each errors.fieldname}} 
    {{this.message}} 
{{/each}} 
0

第一:你的errors.title是(像你的服務器響應的所有其他屬性)一個Array所以你會得到標題errors.title[0]。因爲您不能直接從Handlebars中直接引用它,所以您必須從控制器提供它或將服務器響應傳遞給定製幫助程序。

二:很難(或者不如說不可能)知道爲什麼isError永遠不會觸發/套無碼...

+0

我已經添加了一個JSBin,我嘗試了盡我所能複製錯誤。如果你能看一看,我將不勝感激。感謝您的回答! – Dave

+0

你是對的。我將在另一個答案中發佈工作語法。 – Dave