我正在尝试在Ember中创建某种搜索功能,并且在将输入字段的值传递给要处理的控制器时遇到了一些麻烦。
这就是我所拥有的
App.ApplicationController = Ember.Controller.extend({
actions: {
handle_search: function() {
var search_text = this.get('controllers.search_text');
console.log(search_text);
}
}
});
这就是我在模板中的内容
<span class="input-group-addon"><i class="fa fa-search"></i></span>
{{input type="text" valueBinding=search_text class="form-control" placeholder="Search..."}}
<span class="input-group-btn">
<button {{action 'handle_search'}} class="btn btn-default" type="button">Search</button>
</span>
这给了我以下错误
WARNING: You're attempting to render a view by passing valueBinding=search_text to a view helper, but this syntax is ambiguous. You should either surround search_text in quotes or remove `Binding` from valueBinding. ember.js:3521
Error Uncaught object
所以我也尝试了value
而不是valueBinding
和this.controller.get('search_text') instead of
this.get('controllers.search_text');`我得到了这个错误
Uncaught TypeError: Cannot read property 'get' of undefined app.js:127
那么如何访问控制器中模板中设置的值? search_text
变量只是我在模板中创建的一些名称,因此我可以尝试访问控制器上的输入值。
答案 0 :(得分:2)
属性存在于控制器上,因此您可以使用this.get('foo')
App.ApplicationController = Ember.Controller.extend({
actions: {
handle_search: function() {
var search_text = this.get('search_text');
console.log(search_text);
}
}
});
只有在使用其名称的文本版本绑定到属性时,才应使用valueBinding,例如valueBinding='foo'
。如果您想直接绑定到属性,只需执行value=foo
。
{{input type="text" value=search_text class="form-control" placeholder="Search..."}}