Validation 如何使Ember控制器处理服务器验证错误?
我对余烬数据使用restapter。如何使Ember控制器处理服务器验证错误?我认为这段代码应该在“console.log(todo.errors);”行中,但我不知道如何实现所需的格式副本模板Validation 如何使Ember控制器处理服务器验证错误?,validation,ember.js,ember-data,Validation,Ember.js,Ember Data,我对余烬数据使用restapter。如何使Ember控制器处理服务器验证错误?我认为这段代码应该在“console.log(todo.errors);”行中,但我不知道如何实现所需的格式副本模板 App.TodosRoute = App.AuthenticatedRoute.extend({ model: function () { return App.Todo.find(); } }); App.TodosController = Ember.ArrayController
App.TodosRoute = App.AuthenticatedRoute.extend({
model: function () {
return App.Todo.find();
}
});
App.TodosController = Ember.ArrayController.extend({
createTodo: function(todo) {
var data = this.getProperties('title', 'priority', 'due_date');
var todo = App.Todo.createRecord(data);
var self = this;
todo.on('becameInvalid', function(todo) {
// show errors on the form. code goes here
console.log(todo.errors);
});
todo.on('didCreate', function() {
// render list. code goes here
self.set('title', '');
self.set('priority', '');
self.set('due_date', '');
});
todo.save();
}
});
<script type="text/x-handlebars" data-template-name='todo/_edit'>
{{input type='number' class="input" placeholder="Priority" value=priority}}
{{input class="input" placeholder="What needs to be done?" value=title}}
{{input type='date' class="input" placeholder="Due date" value=due_date}}
</script>
<script type="text/x-handlebars" data-template-name="todos">
<section id="todoapp">
<header id="header">
{{partial 'todo/edit'}}
<button {{action "createTodo"}}>Save</button>
</header>
<section id="main">
<ul id="todo-list" class="sortable">
{{#each controller itemController='todo'}}
{{#unless isNew}}
<li {{bindAttr class="isEditing:editing"}} data-id="{{unbound id}}">
{{#if isEditing}}
{{partial 'todo/edit'}}
<button {{action "saveTodo"}} class="save-button">Save</button>
{{else}}
<label>{{priority}}</label>
<label>{{title}}</label>
<label>{{date due_date}}</label>
<button {{action "editTodo"}} class="edit-button">Edit</button>
<button {{action "removeTodo"}} class="destroy">Delete</button>
{{/if}}
</li>
{{/unless}}
{{/each}}
</ul>
</section>
</section>
</script>
App.TodosRoute=App.AuthenticatedRoute.extend({
模型:函数(){
返回App.Todo.find();
}
});
App.TodosController=Ember.ArrayController.extend({
createTodo:函数(todo){
var data=this.getProperties('title','priority','due_date');
var todo=App.todo.createRecord(数据);
var self=这个;
todo.on('becameInvalid',函数(todo){
//在表单上显示错误。代码显示在此处
console.log(todo.errors);
});
todo.on('didCreate',function()){
//渲染列表。代码在这里
self.set('标题','');
self.set('优先级','');
self.set('到期日','');
});
todo.save();
}
});
{{input type='number'class=“input”placeholder=“Priority”value=Priority}
{{input class=“input”placeholder=“需要做什么?”value=title}
{{input type='date'class=“input”placeholder=“到期日”值=到期日}
{{partial'todo/edit'}
拯救
{{{#每个控制器itemController='todo'}
{{{#除非是新的}
-
{{/除非}
{{/每个}}
最后我得到了如下代码:
App.TodosNewController = Ember.ObjectController.extend({
create: function() {
var data = this.getProperties('title', 'priority', 'due_date');
var todo = App.Todo.createRecord(data);
var self = this;
todo.on('becameInvalid', function(todo) {
self.set('model', todo);
});
todo.on('didCreate', function() {
self.set('priority', '');
self.set('title', '');
self.set('due_date', '');
self.transitionToRoute('todos');
});
todo.save();
}
});
希望它能帮助别人