如何将选定的属性添加到Meteor Blaze中的下拉选项标签?

时间:2016-09-09 17:32:06

标签: javascript meteor meteor-blaze

HTML

<select id="article-weight">
    {{#each weightValues}}
        <option value="{{this}}">{{this}}</option>
    {{/each}}
</select>

JS

Template.articleSingle.helpers({
    weightValues: function(){
        return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    }
)};

Template.articleSingle.events({
    'change #article-weight': function (event, template) {
        weight = parseInt( $(event.currentTarget).val() );
        Meteor.call('updateArticle', template.data._id, {
            weight: weight
        });
    }
)};

我想要这样的东西

{{#each weightValues}}
    <option {{#if weight==this}}selected{{/if}} value="{{this}}">{{this}}</option>
{{/each}}

但是在Blaze的if块中比较变量肯定是不可能的 知道怎样才能达到我想要的效果吗?

2 个答案:

答案 0 :(得分:1)

Template.articleSingle.helpers({
    weightValues: function(){
        return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    },
    isSelected:function(comparison){
        return comparison === this;
    },
    yourComparison:function(){
        return 3;
    },
)};

{{#each weightValues}}
    {{#if isSelected yourComparison}}
        <option selected='true' value="{{this}}">{{this}}</option>
    {{else}}
       <option value="{{this}}">{{this}}</option>
    {{/if}}
{{/each}}

答案 1 :(得分:1)

试试这个

Template.articleSingle.helpers({
    weightValues(){
       return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
   },
   weight(){
      return 2
   },
)};

<select id="select">
  {{#each weightValues}}
        <option {{#if $eq this weight}} selected="selected" {{/if}} value="{{this}}">{{this}}</option>
   {{/each}}
</select>

或者您可以使用javaScript

 $('#select option[value="2"]').attr('selected', 'selected');