2014-04-13 58 views
0

工程時我有以下形式和控制器:需要澄清如何灰燼{{輸入}}得到一個值

<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()來獲取輸入字段的值,然後在我的模型中調用一個靜態方法來取回數據。這現在工作正常。

似乎值=版(Subreddit)類似於valueBindings = 「版(Subreddit)」(告訴我,如果我錯了)。

我的問題是,爲什麼我不能只是這樣做:

{{input value="" name="subreddit" id="subreddit" placeholder="Subreddit" required="true"}} 

其中屬性爲空。

當我嘗試它,var value = this.get('subreddit');不會返回我輸入該字段的值。實際上,調試器說它是未定義的。

回答

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"}} 

這工作,但它一般是更好的綁定值到模型的屬性。