javascript and mustache - passing an array to template

若如初见. 提交于 2019-12-12 16:32:38

问题


I am trying to learn mustache / icanhaz in conjunction with jquery and javascript, and I've got a mustache template to which I'm passing various data. One of the pieces of data is a list of choices, but that list can vary in length (say, one to three choices). How do I pass that varying data to mustache?

This is my code:

Javascript:

for (childIndex in scenes[sceneID].children) {
    childSceneID = scenes[sceneID].children[childIndex];
    childScene = scenes[childSceneID];
    childLink = childScene.name;
}

decision = ich.decision(decisionData);
$('#page_container').append(decision);

Template:

<script id="decision" type="text/html">
        <div id="page">
            <h1>{{ tTitle }}</h1>
            <ul id="options">
                <li>{{tDecision}}</li>
            </ul>
            {{#tBacklink}}<a id="back" data-sceneid="{{tBacklink}}">Back</a>{{/tBacklink}}
        </div>
    </script>

So somehow I have to pass all the childLinks in the decision object to mustache to be parsed in a loop to output the list of <li> elements.

Anybody know how to do this?


回答1:


Model your data in an object first of all,

var scene = {
  tTitle: '',
  tDecision: '',
  tBacklink: ''
};

Then place each of these objects in an array on each iteration of your loop

var scenes = [];

for () {
  scenes.push(scene);
}

Then call Mustache to render the template with the scenes array, the template has been modified like this

<script id="decision" type="text/html">
  <div id="page">
    {{#scenes}}
      <h1>{{ tTitle }}</h1>
      <ul id="options">
        <li>{{tDecision}}</li>
      </ul>
      {{#tBacklink}}<a id="back" data-sceneid="{{tBacklink}}">Back</a>{{/tBacklink}}
    {{/scenes}}
  </div>
</script>


来源:https://stackoverflow.com/questions/7071081/javascript-and-mustache-passing-an-array-to-template

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!