3

我正在尝试使用包含选择下拉菜单的表单制作页面。我想让选择选项来自集合,而不是在 HTML 中手动键入它们。到目前为止还没有运气。这是我的代码:

html:

<template name="addPage">
    <div id="addForm">
        <form>
            <ul>
                <li>
                    <label>Select a genre:</label>
                    <select id = "genreList">
                        {{#each genres}}
                            {{> genre}}
                        {{/each}}
                    </select>
                </li>
                <li><input type="submit" value="Submit"></li>
            </ul>
        </form>
    </div>
</template>

<template name="genre">
    <option value="{{genre}}">{{genre}}</option>
</template>

js:(使用 mongodb-aggregation 进行不同的调用)

Template.addPage.genres = function () {

  Activities.distinct("genre", function(error, result){

    var returnArray = new Array();

    for(var i in result) {
      returnArray[i] = { 'genre': result[i] };
    }

    return returnArray;
  });
}

使用此代码,选择下拉表单为空。我正在尝试做的事情可能吗?

PS。我想也许函数 Template.addPage.genres 在数组被填充之前返回......

谢谢!

4

2 回答 2

1

我通过使用呈现的回调解决了这个问题:

Template.addPage.rendered = function() {
  Activities.distinct("genre", function(error, result){        
    result.sort();
    var genreList = document.getElementById('genreList');
    for(var i in result){
      var option=document.createElement("option");
      option.text=result[i];
      genreList.add(option, null);
    }
  });
}
于 2013-06-19T04:52:34.233 回答
1

我已经使用 Mongo 的find方法将 Collection 暴露给模板:

Template.addPage.genres = function() {
   return Genres.find({}, {sort:{time: -1}});       
}
于 2014-06-16T17:00:42.747 回答