1
到目前为止,它看起来像Ember不像我预期的那样工作,我希望我错过了一些东西。我需要做的是迭代我的模型,由数组和对象组成的一组JSON,并构建出一个表单。当用户标记复选框时,控制器更新模型。ember.js属性绑定和事件对象
以下是我想要的工作......
<form {{action 'answerSupplied'}}>
{{#each model.questions}}
<h3>{{text}}</h3>
{{#each answers}}
{{input type='../type' answerId='id' data-bind-questionNum='../id' text}}
{{/each}}
{{/each}}
</form>
以下是我能得到接近......
<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/>'
);
}
});
最大的问题机智,这是,我无法确定哪个元素被点击是因为我没有访问事件对象的权限。
我可以手动将动作绑定到“data-ember-action”之类的东西,并传入参数吗?或者,这是否远离Ember方式?
== ==更新
这里的上述JSFiddle,通过传递参数给Action提高。事件传播似乎在Action中停止,导致输入未正确标记。单选按钮松散了他们的分组,并且复选框没有被检查。
谢谢。这有很大帮助。我认为它应该以这种方式工作。我将无法测试,直到下班后,但它看起来像数据绑定属性是要传递给操作?如果这样的话,我会对Ember非常满意。 – nullsteph
我能够得到更接近和传递参数与这个代码在名为'每个'循环:' {{answer.text}}
'...但是,事件被困在控制器中,复选框和单选按钮不会被标记。我如何让事件继续冒泡并检查复选框? – nullsteph