Validation 如何使Ember控制器处理服务器验证错误?

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

我对余烬数据使用restapter。如何使Ember控制器处理服务器验证错误?我认为这段代码应该在“console.log(todo.errors);”行中,但我不知道如何实现所需的格式副本模板

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();
  }
});
希望它能帮助别人