問題は、クラスを定義し、そこから取得しようとしてvalue
いることです。あなたが望むのはvalue
、具体的なインスタンスの を取得することです。value
これは、 のLabelView
を で取得できる値にバインドすることで実現できますApp.TodoView
。この場合は、http : //jsfiddle.net/pangratz666/PTPsV/todoLabel
を参照してください。
ハンドルバー:
{{#view App.TodoView }}
<!-- Bind the value of the LabelView to todoLabel on the App.TodoView -->
{{view LabelView valueBinding="todoLabel" }}
{{#view Em.Button target="parentView" action="createNew" }}Add{{/view}}
{{/view}}
JavaScript :
App.TodoView = Em.View.extend({
LabelView: Em.TextField.extend(),
createNew: function(){
var value = this.get('todoLabel');
console.log( 'le todoLabel', value );
}
});
クラスを定義しているのでLabelView
、インスタンスは小文字で書かれているのに対し、大文字で書くのが慣例であることに注意してください。The Emberistによる命名規則に関する良いブログ投稿を参照してください。
また、 のプロパティにアクセスするにはEmber.Object
、常に を使用する必要があるためget
、 であり、 でthis.get('todoLabel')
はありませんthis.todoLabel
。
and のようなさらなるメソッドを実装できるようinsertNewline
になりcancel
ました - それはinsertNewline
and notinsertNewLine
であることに注意してください。
結果は次のようになります。 http://jsfiddle.net/pangratz666/9ZLAC/を参照してください。
App.TodoView = Em.View.extend({
LabelView: Em.TextField.extend({
insertNewline: function(){
this.get('parentView').createNew();
},
cancel: function(){
this.set('value', '');
}
}),
createNew: function(){
var value = this.get('todoLabel');
console.log( 'le todoLabel', value );
}
});