【问题标题】:Emberjs: In my template I can't get a value from a form my controllerEmberjs:在我的模板中,我无法从我的控制器的表单中获取值
【发布时间】:2015-09-29 16:25:57
【问题描述】:

我创建了一个模板,它是控制器,我在控制器中设置了一个变量(值),但是当我尝试在模板中访问时注意到发生了。 我的控制器是:

    App.AboutController = Ember.Controller.extend({
    info:null,
    init: function() {
        console.log("yes i am in About controller");
        info = post["about"];
    },
  actions: {
    getdata1:function(data){
    console.log("get data",data);
    info = post[data];
    console.log(info);
    }

  }

模板是:

<script type="text/x-handlebars" id="about" data-template-name="about">
<div class="col-xs-6 middlesubBody">
               {{info}}
           </div>
            <div class="col-xs-3 rightsubBody">
                <div id="column">
                        <div
                        {{action "getdata1" "about"}}> About</div>
                        <div>
</div>
</script>

我的操作工作正常,但信息值未设置为模板。我想动态绑定。我想我错了,但我不知道问题出在哪里。

【问题讨论】:

    标签: javascript ember.js ember-controllers


    【解决方案1】:

    您需要使用this.set('info', value) 而不是info = value。此外,您多次使用post,但它没有在任何地方定义。我必须假设您已经在某处定义了它:

    App.AboutController = Ember.Controller.extend({
      info: null,
      init: function() {
        console.log("yes i am in About controller");
        this.set('info', post["about"]);
        this._super(); // you need this to avoid unexpected behavior
      },
      actions: {
        getdata1: function(data) {
          console.log("get data",data);
          this.set('info', post[data]);
          console.log(this.get('info'));
        }
      }
    });
    

    【讨论】:

    • 所以我删除了检查 post 是否已定义。答案中的代码应该适合你。
    • 它工作正常,但请告诉我 this._super() 的用法
    • 它调用父方法。如果你覆盖 init 钩子,你只需要包含它。
    猜你喜欢
    • 2023-02-06
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    相关资源
    最近更新 更多