我有以下表格和控制器:
<form {{action loadList on="submit"}}>
{{input value=subreddit id="subreddit" placeholder="Subreddit" required="true"}}
<button type="submit">Go!</button>
</form>
控制器:
App.IndexController = Ember.ObjectController.extend( {
subredditHeader: "aww",
loadList: function() {
var value = this.get('subreddit');
if (value) {
this.set('subredditHeader', value);
this.set( 'model', App.RedditLink.findAll( value ) );
// Clear out the input field
this.set('subreddit', '');
}
}
});
基本上,在提交时,它调用 loadList(),它使用 this.get()来获取输入字段的值,然后调用我的静态方法模型来拉回数据。这个现在工作正常。
似乎 value = subreddit 类似于 valueBindings =“subreddit”(告诉我,如果我错了)。
我的问题是为什么我不能这样做:
{{input value="" name="subreddit" id="subreddit" placeholder="Subreddit" required="true"}}
value 属性为空。
当我尝试它时, var value = this.get('subreddit'); 不会返回我在字段中输入的值。事实上,调试器说它是未定义的。
答案 0 :(得分:0)
Ember将值绑定到上一个中的subreddit。如果将值保留为空,则它不受约束,并且由于控制器中没有任何名为subreddit的内容,因此未定义。试试这个:
App.IndexController = Ember.ObjectController.extend( {
myInputValue: '';
loadList: function() {
var value = this.get('myInputValue');
// Other things
}
})
在模板中:
{{input value=myInputValue name="subreddit" id="subreddit" placeholder="Subreddit" required="true"}}
这有效,但通常最好将值绑定到模型的属性。