我有一个奇怪的问题。我有一个confectionoptions
列表。这些confectionoptions
中的每一个都有一个属性,其中包含可以设置的选项列表。如果此选项在其属性IsSelected
中的值为true,那么我知道这是一个。
这是我的HTML,如果我改变一个值,我只得到它自己的总对象!我需要选择值,我该怎么做?我已经尝试了一个额外的淘汰可观察属性,我设置了值,但这会导致我不想要的问题(这就是为什么这是一个问题)
<div>
<div class="content" data-bind="visible: (InstoreConfectionOptions().length > 0)">
<h3 data-bind="visible: (InstoreConfectionOptions().length > 0)">
<span class="clean">Instore confectie opties</span>
</h3>
<span data-bind="foreach: InstoreConfectionOptions">
<h4 data-bind="text: Name + ':'"></h4>
<select data-bind="foreach: Options,
event: { change: $root.SetInstoreOption }">
<option data-bind="text: Name"></option>
</select>
@*<select data-bind="options: Options,
optionsText: 'Name',
value: $root.testtest ">
</select>*@
@*<select data-bind="//options: Options, optionsText: 'Name', event:{change: function(){ $root.SetInstoreOption($data) } }">
</select>*@
@*<select data-bind="options: Options,
optionsText: 'Name',
event: { change: $root.SetInstoreOption }">
</select>*@
</span>
</div>
</div>
然后在我的JS中我想要选择的值,而不是整个东西只是选择的值。我该怎么做?
self.SetInstoreOption = function(options) {
for (var i = 0; i < options.Options.length; i++) {
if (options.Options[i].Selected) {
setOptionValue(options.Options[i]);
break;
}
}
}
答案 0 :(得分:1)
如果你像这样声明你的绑定(如你的例子):
<select data-bind="options: Options,
optionsText: 'Name',
value: $root.testtest ">
</select>
这意味着:
select
将填充Options
内的对象(比如obj
)option
s代码将obj.Name
作为文字option
时,可观察的$root.testtest
将设置为obj
因此,您可以使用$root.testtest()
获取所选对象。
检查 documentation here 。
在你的情况下,因为你已经在循环中,所以不要将值设置为根元素:
<select data-bind="options: Options,
optionsText: 'Name',
value: selectedOpt ">
</select>
selectedOpt
需要成为confection
的观察对象。
选中 example
答案 1 :(得分:0)
你可以试试这个:
var text = $("#select option:selected").text(); // to select the text
//或
var value = $("#select option:selected").val(); // to select the value
希望它有所帮助。