2012-07-02 15 views
5

emberjsへのバインディングに問題があります。私はemberのテキストフィールドをコントローラ内の変数にバインドしました。テキストフィールドに書き込むと、バインドされた変数が正しく更新されます。emberjsバインディング

今、私はJSを通して変数(およびテキストフィールドのテキスト)を変更したいと思います。私がしても何も起こりません。

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>

答えて

10

あなたはそう

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

代わりにあなたは何をしていたのと同様にsetを使用する必要があります。あなたが準拠した方法を使用する場合

this.name = '';

KVO /バインディングのものにのみ発生します。これが最初にこれらのメソッドが存在する理由です。

Here is a working fiddle.

+0

ああ、ありがとう。私は前に設定しようとしたが、間違って使用していた(それが間違っていると仮定していた)。 – Nino