ember.js属性绑定和事件对象

ember.js属性绑定和事件对象,ember.js,handlebars.js,Ember.js,Handlebars.js,到目前为止,看起来余烬并没有像我预期的那样工作,我希望我错过了一些东西。我需要做的是迭代我的模型,一个由数组和对象组成的JSON blob,并构建一个表单。当用户标记复选框时,控制器操作将更新模型 下面是我希望它如何工作 <form {{action 'answerSupplied'}}> {{#each model.questions}} <h3>{{text}}</h3> {{#each answers}}

到目前为止,看起来余烬并没有像我预期的那样工作,我希望我错过了一些东西。我需要做的是迭代我的模型,一个由数组和对象组成的JSON blob,并构建一个表单。当用户标记复选框时,控制器操作将更新模型

下面是我希望它如何工作

  <form {{action 'answerSupplied'}}>
    {{#each model.questions}}
      <h3>{{text}}</h3>

        {{#each answers}}
            {{input type='../type' answerId='id' data-bind-questionNum='../id' text}}
        {{/each}}

    {{/each}}
  </form>

{{{#每个模型.问题}
{{text}}
{{{#每个人都回答}
{{input type='../type'answerId='id'数据绑定questionNum='../id'文本}
{{/每个}}
{{/每个}}
以下是我如何接近这一点

  <form {{action 'answerSupplied' this}}>
    {{#each model.questions}}
      <h3>{{text}}</h3>

        {{#each answers}}
            {{formbuilder ../type id ../id text}}
        {{/each}}

    {{/each}}
  </form>
==================
Handlebars.registerHelper('formbuilder', function(type, id, qnum, text, options)
{
//    console.log(options);

    var q_type = options.contexts[0][type],
        a_id = options.contexts[1].id,
        q_number = options.contexts[0][qnum],
        a_text = options.contexts[1].text;

        return new Handlebars.SafeString(
                '<input type='+ q_type +' id='+ a_id +' name='+
                    q_number +'>'+ a_text + '</input><br/>'
        );
    }
});

{{{#每个模型.问题}
{{text}}
{{{#每个人都回答}
{{formbuilder../type id../id text}
{{/每个}}
{{/每个}}
==================
Handlebar.registerHelper('formbuilder',函数(类型、id、qnum、文本、选项)
{
//console.log(选项);
var q_type=options.context[0][type],
a_id=options.contexts[1].id,
q_number=options.context[0][qnum],
a_text=options.contexts[1].text;
返回新把手。安全字符串(
“+a_text+”
” ); } });
最大的问题是,我无法识别单击了哪个元素,因为我没有访问事件对象的权限

我是否可以手动将操作绑定到类似“data ember action”的东西,并传入参数?或者,这是不是太远了

==更新==


以上是通过向操作传递参数而改进的。事件传播似乎在操作中停止,导致输入未正确标记。单选按钮失去了分组,复选框不会被选中。

Ember可以轻松处理您在这里所做的事情。首先,更容易保留范围并生成命名的每个循环

 <form {{action 'answerSupplied'}}>
    {{#each question in model.questions}}
      <h3>{{question.text}}</h3>

        {{#each answer in question.answers}}
            {{input type=question.type answerId=answer.id data-bind-questionNum=question.id placeHolder=answer.text}}
        {{/each}}

    {{/each}}
  </form>

{{{#模型中的每个问题。问题}
{{问题.文本}
{{{#每个问题的答案。答案}
{{input type=question.type answerId=answer.id数据绑定questionNum=question.id占位符=answer.text}
{{/每个}}
{{/每个}}
您可能需要在输入语句周围对标签等执行一些if语句


谢谢。这很有帮助。我想应该是这样的。我在下班后才能进行测试,但看起来数据绑定属性应该传递给操作?如果这样做有效的话,我会对Ember非常满意。我能够更接近并在命名的“each”循环中使用此代码传入参数:
{{answer.text}
…但是,事件被困在控制器中,复选框和单选按钮没有被标记。如何让事件继续冒泡并选中复选框?