2014-04-16 42 views
0

我有两个下拉选择选项菜单通过api调用填充json数据。我想添加“选择”选项作为第一个没有价值的选项。有没有一种方法可以在我的视图或车把中完成此操作?我尝试了unshift方法,但我似乎无法让集合成功添加新选项。这里是我的代码:胸部选择菜单集合的第一个选项

var productsMenuView = new Thorax.View({ 
    template: Handlebars.compile($('#products-template').html()), 
    collection: new Thorax.Collection(
     [{ 
      id: selectMenu.id, 
      name: selectMenu.name 
     }] 
    ), 
    initialize: function() { 
     this.collection.fetch({url: 'products.json'}); 
     myString = this.collection; 
     obj = myString.unshift({id: "0", name: "Select"}); 
     console.log(myString); 
     return obj; 
    } 
}); 

这里是把手模板:

<script id="products-template" type="text/x-handlebars-template"> 
{{#collection tag="select" id="productSelect" class="modelSearchMenus"}} 
    <option value="{{name}}">{{name}}</option> 
{{/collection}} 
</script> 

我的菜单显示此选项列表:

<select id="productSelect" class="modelSearchMenus" data-view-cid="view21" data-view-helper="collection" data-collection-element="true" data-collection-cid="collection7"> 
<option value="Audio equipment" data-model-cid="c35">Audio equipment</option> 
<option value="Cooktop" data-model-cid="c36">Cooktop</option> 
<option value="Drill" data-model-cid="c37">Drill</option> 
<option value="Fan" data-model-cid="c38">Fan</option> 
<option value="Garbage disposal" data-model-cid="c39">Garbage disposal</option> 
<option value="Microwave" data-model-cid="c40">Microwave</option> 
<option value="Pruner" data-model-cid="c41">Pruner</option> 
<option value="Range" data-model-cid="c42">Range</option> 
<option value="Ratchet/nut driver" data-model-cid="c43">Ratchet/nut driver</option> 
<option value="Vacuum" data-model-cid="c44">Vacuum</option> 
<option value="Wall oven" data-model-cid="c45">Wall oven</option> 

这就是我想要的菜单显示:

<select id="productSelect" class="modelSearchMenus" data-view-cid="view21" data-view-helper="collection" data-collection-element="true" data-collection-cid="collection7"> 
<option value="">Select</option> 
<option value="Audio equipment" data-model-cid="c35">Audio equipment</option> 
<option value="Cooktop" data-model-cid="c36">Cooktop</option> 
<option value="Drill" data-model-cid="c37">Drill</option> 
<option value="Fan" data-model-cid="c38">Fan</option> 
<option value="Garbage disposal" data-model-cid="c39">Garbage disposal</option> 
<option value="Microwave" data-model-cid="c40">Microwave</option> 
<option value="Pruner" data-model-cid="c41">Pruner</option> 
<option value="Range" data-model-cid="c42">Range</option> 
<option value="Ratchet/nut driver" data-model-cid="c43">Ratchet/nut driver</option> 
<option value="Vacuum" data-model-cid="c44">Vacuum</option> 
<option value="Wall oven" data-model-cid="c45">Wall oven</option> 

我在做什么错?

回答

0

它添加到您的模板很可能是解决这个问题的最简单的方法:

<script id="products-template" type="text/x-handlebars-template"> 
<option value="">Select</option> 
{{#collection tag="select" id="productSelect" class="modelSearchMenus"}} 
    <option value="{{name}}">{{name}}</option> 
{{/collection}} 
</script> 
+0

我已经试过这已经选择的菜单完全消失。当然。这是最明显的选择,但不幸的是它不起作用 – OnlineOverlord

+0

这很奇怪,尝试控制台日志记录'myString',你可能需要将它转移到集合中的某些东西上,当我查看一个主干集合时,在里面'collection.models' – orhanhenrik

+0

当我控制台日志'myString','孩子{长度:25,models:Array [25],_byId:Object, cid:“collection4”,_fetched:true ...}返回 未定义。我是否需要使用'JSON.stringify()'方法返回一个数组? – OnlineOverlord

1

如果可以的话我只是不印字另一个元素到集合。

collection.fetch({ 
    success: function(collection) { 
    collection.unshift(new Thorax.Model({name: 'Select'})); 
    } 
}); 

理想情况下,你可以有一个id设置'”,但如果没有可以if语句像添加:

{{#collection tag="select" id="productSelect" class="modelSearchMenus"}} 
    <option value="{{#if name === 'Select'}}{{else}}{{name}}{{/if}}">{{name}}</option> 
{{/collection}} 
相关问题