如何使用 Backbone 将 <option> 标记为在模板中选中
How to mark <option> as selected in template with Backbone
我有一些代码可以将数据插入到模板中:
<script type="text/template" id="yes-or-no-tpl">
<select>
<option value=""></option>
<option value="y" <%= "y" == value ? "selected" : "" }}>Yes</option>
<option value="n" <%= "n" == value ? "selected" : "" }}>No</option>
</select>
</script>
到目前为止,我只发现了有关如何对用户选择选项做出反应的问题。我想在用户看到该字段之前将选项标记为已选中。
此代码有效,但我认为必须有更优雅的解决方案。 Backbone 有内置的东西来做这个吗?
我查看了 backbone-forms,但我没有找到指定预选选项的方法。
您始终可以在呈现模板后使用 jQuery 以编程方式完成此操作。是或否模板在这里没有太多节省,但如果 select 中有 50 个选项,它会减少很多冗长。
var value = 'n'
, tmpFn = _.template($('#yes-or-no-tpl').html())
, $el = $('#result');
$el.html(tmpFn());
$el.find('option[value="' + value + '"]').attr('selected', 'selected');
// view.$el.html(tmpFn());
// view.$('option[value="' + value + '"]').attr('selected', 'selected');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>
<script type="text/template" id="yes-or-no-tpl">
<select>
<option value=""></option>
<option value="y">Yes</option>
<option value="n">No</option>
</select>
</script>
<div id="result"/>
关于内置选项,Backbone不包含任何数据绑定。您可以查看像 Epoxy.js 这样的附加库,但要注意维护不善的工具,在较长的 运行.
中可能会更麻烦
我有一些代码可以将数据插入到模板中:
<script type="text/template" id="yes-or-no-tpl">
<select>
<option value=""></option>
<option value="y" <%= "y" == value ? "selected" : "" }}>Yes</option>
<option value="n" <%= "n" == value ? "selected" : "" }}>No</option>
</select>
</script>
到目前为止,我只发现了有关如何对用户选择选项做出反应的问题。我想在用户看到该字段之前将选项标记为已选中。
此代码有效,但我认为必须有更优雅的解决方案。 Backbone 有内置的东西来做这个吗?
我查看了 backbone-forms,但我没有找到指定预选选项的方法。
您始终可以在呈现模板后使用 jQuery 以编程方式完成此操作。是或否模板在这里没有太多节省,但如果 select 中有 50 个选项,它会减少很多冗长。
var value = 'n'
, tmpFn = _.template($('#yes-or-no-tpl').html())
, $el = $('#result');
$el.html(tmpFn());
$el.find('option[value="' + value + '"]').attr('selected', 'selected');
// view.$el.html(tmpFn());
// view.$('option[value="' + value + '"]').attr('selected', 'selected');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>
<script type="text/template" id="yes-or-no-tpl">
<select>
<option value=""></option>
<option value="y">Yes</option>
<option value="n">No</option>
</select>
</script>
<div id="result"/>
关于内置选项,Backbone不包含任何数据绑定。您可以查看像 Epoxy.js 这样的附加库,但要注意维护不善的工具,在较长的 运行.
中可能会更麻烦