Javascript 敲除multiselect selectedOptions包含值而不是对象

Javascript 敲除multiselect selectedOptions包含值而不是对象,javascript,knockout.js,Javascript,Knockout.js,我有一个属性为multiple的select。对于“选择我想要的标题”属性集中的每个选项(显示工具提示)。我还希望以对象数组的形式检索选定的选项。我成功地得到了我想要的,除了所选选项不返回对象数组,而是返回ValueText数组。我不知道如何在那个数组中获取对象 这是我到目前为止得到的代码: HTML: 以及用于演示的小提琴链接: 我需要添加或更改什么才能使数组selectedOptions包含对象而不是字符串?像这样尝试html <select data-bind="

我有一个属性为multiple的select。对于“选择我想要的标题”属性集中的每个选项(显示工具提示)。我还希望以对象数组的形式检索选定的选项。我成功地得到了我想要的,除了所选选项不返回对象数组,而是返回ValueText数组。我不知道如何在那个数组中获取对象

这是我到目前为止得到的代码:

HTML:

以及用于演示的小提琴链接:


我需要添加或更改什么才能使数组selectedOptions包含对象而不是字符串?

像这样尝试html

<select 
    data-bind="
        options: options,
        selectedOptions : selectedOptions,
        optionsText: 'Name',
        optionsCaption: 'Choose...'
    "
 size="5" multiple="true"></select>
并创建一个函数

self.setTitle = function(option, item) {
    option.title = item.Name
}  


请参见注释2,使用选项和选项文本绑定而不是foreach

<select multiple style="width: 150px;" size=15 
    data-bind="options: options, optionsText: 'Name', selectedOptions: selectedOptions">
<option data-bind="text: Name, attr: { 'title': Name}"></option>
</select>


这里是演示:

类似于@MuhammadRaheel,我使用了
选项afterrender

<select data-bind="optionsAfterRender: myFunc, ...">

您不需要为此使用foreach。请看一看,如果我不使用foreach和options绑定,如何将title属性添加到select标记内的option标记并将值绑定到它?@Cornelis我已经更新了您现在可以看到的答案。谢谢,optionsAfterRender完成了这项工作。虽然$root不是必需的。事实上,它在我需要显示工具提示的原始项目中给出了错误。我也尝试过使用$parent或$parents,但只要setTitle和options在同一个ViewModel中,就不需要通过使用$root或$parent等转换到不同的ViewModel。这只是一个例子。您可以根据需要使用任何模型来定义和引用函数。很高兴它有帮助!!!
self.setTitle = function(option, item) {
    option.title = item.Name
}  
<select multiple style="width: 150px;" size=15 
    data-bind="options: options, optionsText: 'Name', selectedOptions: selectedOptions">
<option data-bind="text: Name, attr: { 'title': Name}"></option>
</select>
<select data-bind="optionsAfterRender: myFunc, ...">
var self.myFunc = function(option, item) {
    ko.applyBindingsToNode(option, { attr: { title: 'Tooltip!' } }, item);
}