2013-08-29 15 views
17

Tôi chỉ nâng cấp từ ember.js RC7 để RC8 và thấy rằng một mẫu đơn giản (hình dưới đây) sẽ ném một cảnh báo phản đốiTrình xử lý tác vụ được triển khai trực tiếp trên bộ điều khiển không được chấp nhận - để sửa lỗi này?

"xử lý hành động thực hiện trực tiếp trên bộ điều khiển đang bị phản đối"

{{input class="firstName" type="text" placeholder="first name" value=firstName }}          
{{input class="lastName" type="text" placeholder="last name" value=lastName }}           
<button class="submit" {{action addPerson}}>Add</button>                
<br />                             
<table>                             
{{#each person in controller}}                       
<tr>                             
    <td class="name">{{person.fullName}}</td>                    
    <td><button class="delete" {{action deletePerson person}}>Delete</button></td>          
</tr>                             
{{/each}}                            
</table> 

Tôi nên sửa đổi mẫu ở trên để sửa lỗi này như thế nào?

Trả lời

29

Dường như tôi chỉ cần thiết để give the PR một cái nhìn làm thay đổi này :)

Trong điều khiển của tôi, tôi chỉ cần thiết để di chuyển addPerson/deletePerson dưới hành động như vậy

App.PeopleController = Ember.ArrayController.extend({                 
    actions: {                           
     addPerson: function() {                       
      var person = {                        
       firstName: this.get('firstName'),                  
       lastName: this.get('lastName')                   
      };                           
      App.Person.add(person);                      
     },                            
     deletePerson: function(person) {                    
      App.Person.remove(person);                     
     }                            
    }                             
}); 
+0

'this.store.createRecord() 'thay vì' App.Person.add() 'http://emberjs.com/guides/getting- bắt đầu/tạo-a-new-model/ –

+0

ah vâng -cho ví dụ này tôi đã không sử dụng dữ liệu ember :) –

12

Bạn nên xác định của bạn hành động bên trong băm actions trong bộ điều khiển, chế độ xem và tuyến đường để ưu tiên tính nhất quán.

Tham khảo này https://github.com/emberjs/ember.js/pull/3091

Demo Fiddle

App.ApplicationController = Em.ObjectController.extend({ 
    actions : { 
    // your actions here 
    }  
});