【问题标题】:Need clarification on how Ember {{input}} works when getting a value需要澄清 Ember {{input}} 在获取值时是如何工作的
【发布时间】:2014-04-13 21:01:11
【问题描述】:

我有以下表单和控制器:

<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'); 不会返回我在字段中输入的值。事实上,调试器说它是未定义的。

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    Ember 将 value 绑定到前一个中的 subreddit。如果您将 value 留空,则它不会被绑定并且您会得到 undefined,因为在名为 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"}}
    

    这可行,但通常最好将值绑定到模型的属性。

    【讨论】:

      猜你喜欢
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 2011-11-09
      • 2012-07-18
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多