2015-06-16 52 views
1

我正在根據來自服務器的數據生成複選框列表&單選按鈕。該頁面是使用Ember的Handlebars模板。要生成我的頁面上的列表中,我使用下面的代碼行:將手柄插入Ember中的DOM

document.getElementById('radioList').innerHTML = newHtml; 

此工作正常,如果newHtml設置爲一樣的東西:

<li><input type="radio" id="radio1" name="radio /><label for="radio1">List item one</label></li> 

不過,我想事件基於這些單選按鈕(或複選框)被選中或取消選中 - 並在Google搜索後,似乎使用Handlebars幫手是要走的路。但是,當我嘗試插入使用車把的單選按鈕,設置這樣的newHtml

<li>{{input type="radio" id="radio1" name="radio }}<label for="radio1">List item one</label></li> 

文本剛剛出現,而不是一個單選按鈕本身。進一步深入研究似乎表明,我插入的Handlebars模板需要重新編譯?我可能是錯的,但我花了相當多的時間尋找這個問題的答案,似乎無法找到它們。任何幫助,將不勝感激!

+0

你有沒有試過jQuery的改變事件? –

+0

是的,你需要先編譯這段代碼,然後用內部的HTML直接更改不是要走的路。 –

+0

我看了一下實現onclick,但是看起來Ember不太喜歡那樣,並且繞過它有點麻煩(我還沒有很有經驗!),jquery會變成同樣的麻煩? – millerbr

回答

0

這可能會幫助你用jQuery做到這一點。

使用觸發按鈕例如

<h2>Click and select radio button</h2> 
<input type="button" id="btn" value="Generate"/> 
<input type="hidden" value="1" id="hid" /> 

JQUERY

$("#btn").click(function(){ 
    var generatedradios=$("#hid").val(); 

    var str='<input type="radio" class="generated" data-generated="'+generatedradios+'" id="radio1" name="radio" />'; 
    $("#hid").val(Number(generatedradios)+1); 
    $("body").append(str); 
}); 

$(document).on("change",".generated",function(){ 
    alert($(this).attr("data-generated")); 
}); 

FIDDLE

http://jsfiddle.net/Isakkiraj/wLg1p8as/