我有以下示例(见下文)与Ember.js一起使用,只要我在文本字段中输入内容并按回车键,一切正常。但是当我按下按钮时,我怎么能得到相同的结果呢?单击按钮时如何绑定文本字段的值?我是否有观点工作?
提前谢谢!
<script type="text/x-handlebars">
{{view App.TextField}}
{{#view Ember.Button target="App.peopleController" action="addPerson"}}
Add Person
{{/view}}
<ul id='todo-list'>
{{#each App.peopleController }}
<li>{{name}}</li>
{{/each}}
</ul>
</script>
<script>
App = Em.Application.create();
App.peopleController = Em.ArrayController.create({
content: [{name: "Tom"}, {name: "Mike"}],
addPerson: function(name) {
this.unshiftObject(App.Person.create({name: name}));
}
});
App.Person = Em.Object.extend({
name: null
});
App.TextField = Em.TextField.extend({
insertNewline: function() {
App.peopleController.addPerson(this.get("value"));
this.set("value", "");
}
});
</script>
答案 0 :(得分:2)
这实际上有点棘手,但我在jsFiddle中重写了你的例子:http://jsfiddle.net/ebryn/vdmrA/
我建议不要在视图子类中对控制器进行硬编码引用。如果您这样做,则无法在其他地方重用这些视图组件。
答案 1 :(得分:0)
我认为在你的代码中,Ember Button只是调用addPerson函数而不给它预期的name参数。您可能必须为该按钮编写单独的视图,以便将输入字段的值传递给addPerson函数。
App.MyButton = Em.Button.extend({
click: function(){
var value = App.TextField.get('value')
// etc
}