问题是您正在定义一个类并试图从中获取value
。您更想要的是获得value
一个具体实例。这可以通过将 的 绑定value
到LabelView
一个值来实现,然后可以在 中检索该值App.TodoView
,在这种情况下todoLabel
,请参阅http://jsfiddle.net/pangratz666/PTPsV/:
车把:
{{#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的一篇关于命名约定的优秀博文。
此外,要访问 an 上的属性Ember.Object
,您应该始终使用get
,所以它是this.get('todoLabel')
而不是this.todoLabel
。
您现在可以实现更多方法,例如insertNewline
and cancel
- 注意 it'sinsertNewline
和 not insertNewLine
,请参阅text_support。
结果将如下所示,请参阅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 );
}
});