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