2012-07-02 29 views
5

Tôi gặp sự cố với việc ràng buộc các emberj. Tôi đã bị ràng buộc một textfield ember đến một biến bên trong một bộ điều khiển. Khi tôi viết vào trường văn bản biến bị ràng buộc được cập nhật một cách chính xác.emberjs binding

Bây giờ tôi muốn thay đổi biến (và văn bản trong trường văn bản) thông qua JS. Không có gì xảy ra khi tôi làm.

App = Ember.Application.create({}); 
 

 
App.FormInfo = Em.TextField.extend({ 
 
    insertNewline: function(){ 
 
     App.AController.clear(); 
 
    } 
 
}); 
 

 
App.AController = Em.ArrayController.create({ 
 
    content: [], 
 
    name: '', 
 
    clear: function(){ //I want this function to clear the text field and set name to an empty string 
 
     this.name = ''; 
 
     console.log(this.name);//expected empty string; actual user input 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
 
<script src="http://cloud.github.com/downloads/emberjs/ember.js/ember-0.9.5.min.js"></script> 
 
<script type="text/x-handlebars"> 
 
    {{view App.FormInfo placeholder="Name" valueBinding="App.AController.name"}} 
 
</script>

Trả lời

10

Bạn cần phải sử dụng set như vậy

this.set('name', '');

thay vì những gì bạn đã làm.

this.name = '';

Các/stuff Binding KVO chỉ xảy ra khi bạn sử dụng các phương pháp phù hợp; đây là lý do tại sao những phương pháp đó tồn tại ở nơi đầu tiên.

Here is a working fiddle.

+0

Ah, cảm ơn. Tôi đã thử thiết lập trước đó, nhưng đã sử dụng nó không chính xác (và đã giả định nó là sai). – Nino