2012-07-02 10 views
5

Mam problem z wiązaniem na emberjs. Przypisałem pole tekstowe ember do zmiennej wewnątrz kontrolera. Kiedy piszę do pola tekstowego, zmienna związana jest poprawnie aktualizowana.wiązanie emberjs

Teraz chcę zmienić zmienną (i tekst w polu tekstowym) poprzez JS. Nic się nie dzieje, kiedy to robię.

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>

Odpowiedz

10

Trzeba użyć set jak tak

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

zamiast tego, co robisz.

this.name = '';

KVO/Wiążąca rzeczy zdarza się tylko podczas korzystania z metod zgodnych; właśnie dlatego te metody istnieją w pierwszej kolejności.

Here is a working fiddle.

+0

Ah, dzięki. Próbowałem wcześniej ustawić, ale użyłem go niepoprawnie (i założyłem, że było źle). – Nino