以动态生成的形式绑定ember模型

时间:2017-04-24 04:34:40

标签: ember.js ember-cli rails-api

我正在学习最近几周的ember js,并构建一个应用程序来学习它。我处于这样一种情况,我必须构建一个动态形式,它将绑定到ember模型。 (这个问题最简单的例子可能是嵌套表单,我们可以点击添加更多链接/按钮来动态添加表单,并为它们添加值。)

但对我而言,我正在建立类似网站的调查,我们可以选择很多选项,用户可以从可用选项中选择一个选项:

到目前为止我做了什么?

readAnswer: Ember.computed(function() {
    return this.get('store').query('answer', { filter:
      {
        question_id: this.get('question.id'),
        submission_id: this.get('submission.id')
      }
    })
  }),

  buildAnswer: Ember.computed(function() {
    this.get('store').createRecord('answer', {
      question: this.get('question'),
      submission: this.get('submission')
    })
  }),

  answer: Ember.computed(function() {
    const ans = this.get('readAnswer');
    console.log(`question_id: ${this.get('question.id')}, submission_id:     ${this.get('submission.id')}`);
    if(Ember.isEmpty(ans)) {
      return this.get('buildAnswer');
    } else {
      return ans;
    }
  })

answer.hbs

<div class="row col-sm-12">
  <div class="form-group">
    <label>{{model.title}}</label>
    <p>
      {{input type="text" value=answer.field01 class="form-control" placeholder="width"}}
    </p>
    <p>
      {{input type="text" value=answer.field02 class="form-control" placeholder="depth"}}
    </p>
  </div>
</div>
  

注意这里的answer.hbs是一个组件,它们是从父路由递归调用(循环)。因此,对于2个问题,我们可以有4个文本框,每个问题有2个文本框,第一个文本框用于answer.field01,第二个文本框用于answer.field02

假设我有2个问题,到目前为止,我可以看到2个答案在ember商店中构建,如果它们尚未存在于数据库中,那么,我可以看到4个文本框在视图中生成。但他们没有约束力。意思是,如果我能够对文本框进行评估,那么在余烬商店中就没有任何反应。

预期结果

当我在文本框中输入答案时,它应该与answer.fieldxx正确绑定。

1 个答案:

答案 0 :(得分:0)

我将这些代码从ds[dataClassName].query("externalID == :1","a1"); 提取到computed property函数,现在一切正常:

init()