Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to generate html template dynamically for a viewmodel using knockout
    text
    copied!<p>I am new to knockout framework.</p> <p>I have this viewmodel</p> <pre><code> {"PagesList": [{"QuestionList": [ {"ParentQid":191,"QuestionId":192,"QuestionText":"Enter Question Text","QuestionType":2,"OptionsList": [ {"QuestionId":192,"OptionId":95,"OptionText":"Option1"}, {"QuestionId":192,"OptionId":96,"OptionText":"Option2"} ] }, {"ParentQid":191,"QuestionId":193,"QuestionText":"Enter Question Text","QuestionType":2,"OptionsList": [ {"QuestionId":193,"OptionId":97,"OptionText":"Option1"}, {"QuestionId":193,"OptionId":98,"OptionText":"Option2"} ] }, {"ParentQid":191,"QuestionId":194,"QuestionText":"Enter Question Text","QuestionType":2,"OptionsList": [ {"QuestionId":194,"OptionId":99,"OptionText":"Option1"}, {"QuestionId":194,"OptionId":100,"OptionText":"Option2"} ] } ],"PageId":191,"PageName":0 }] } </code></pre> <p>I want to generate a html template exactly like this.</p> <pre><code> &lt;div&gt; &lt;div id="191" type="page"&gt; &lt;div id="192" type="question" parentqid="191"&gt; &lt;label&gt; Enter ur Question Text&lt;/label&gt; &lt;div&gt; &lt;div id="95" questionid="192"&gt; &lt;input type="radio" id="r_95" /&gt; &lt;label for="r_95"&gt; Option1&lt;/label&gt; &lt;/div&gt; &lt;div id="96" questionid="192"&gt; &lt;input type="radio" id="r_96" /&gt; &lt;label for="r_96"&gt; Option1&lt;/label&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id="193" type="question" parentqid="191"&gt; &lt;label&gt; Enter ur Question Text&lt;/label&gt; &lt;div&gt; &lt;div id="97" questionid="193"&gt; &lt;input type="radio" id="r_97" /&gt; &lt;label for="r_97"&gt; Option1&lt;/label&gt; &lt;/div&gt; &lt;div id="98" questionid="193"&gt; &lt;input type="radio" id="r_98" /&gt; &lt;label for="r_98"&gt; Option1&lt;/label&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div id="194" type="question" parentqid="191"&gt; &lt;label&gt; Enter ur Question Text&lt;/label&gt; &lt;div&gt; &lt;div id="99" questionid="194"&gt; &lt;input type="radio" id="r_99" /&gt; &lt;label for="r_99"&gt; Option1&lt;/label&gt; &lt;/div&gt; &lt;div id="100" questionid="194"&gt; &lt;input type="radio" id="r_100" /&gt; &lt;label for="r_100"&gt; Option1&lt;/label&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; </code></pre> <p>I am trying like this. ajax call is </p> <pre><code> $.ajax({ url: "/authorsurvey/LoadSurveyQuestions?SurveyId=151", type: 'post', success: function (result) { ViewModel = ko.mapping.fromJS(result); ko.applyBindings(ViewModel, document.getElementById('sMain')); } }); </code></pre> <p>and template html is</p> <pre><code> &lt;script type="text/x-jquery-tmpl" id="layoutpages"&gt; &lt;div data-bind="attr: {id: PageId }" type="pages"&gt; &lt;div class="questiontype" style="height: 40px; padding-top: 4px;"&gt; &lt;label class="questiontype" data-bind="attr: {id: PageId()+'_plabel' }" &gt;Add New Question&lt;/label&gt; &lt;/div&gt; &lt;div data-bind="template: {name:'qtp2', foreach: QuestionList}"&gt; &lt;/div&gt; &lt;/div&gt; &lt;/script&gt; &lt;script type="text/x-jquery-tmpl" id="qtp2"&gt; &lt;div data-bind="attr: {id: QuestionId }" type="pages"&gt; &lt;div class="questiontype" style="height: 40px; padding-top: 4px;"&gt; &lt;label class="questiontype" data-bind="attr: {id: QuestionId()+'_plabel',text:QuestionText()}" &gt;&lt;/label&gt; &lt;/div&gt; &lt;/div&gt; &lt;/script&gt; &lt;div id="sMain"&gt; &lt;div id="pages" data-bind="template: {name:'layoutpages', foreach: PagesList}"&gt; &lt;/div&gt; &lt;/div&gt; </code></pre> <p>is there any shortway to do it ?</p> <p>Thanks for any help ?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload