Cor*_*lis 3 javascript knockout.js
我有一个选择属性倍数.对于select中的每个选项,我想要title属性集(显示工具提示).我还想将所选选项检索为对象数组.我设法得到了我想要的东西,除了选择的选项不返回一个对象数组但是返回一个valueTexts数组的事实.我无法弄清楚如何在该数组中获取对象.
这是我到目前为止的代码:
HTML:
<select multiple style="width: 150px;" size=15
data-bind="foreach: options, selectedOptions: selectedOptions">
<option data-bind="text: Name, attr: { 'title': Name}"></option>
</select><br />
<button data-bind="click: showSelectedOptions">Show selection</button>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
function Option(id, name){
var self = this;
self.Id = id;
self.Name = name;
}
function ViewModel(){
var self = this;
self.options = ko.observableArray([
new Option(0, "NormalText"),
new Option(1, "AnotherText"),
new Option(2, "WaaaaaaaaaaaaaaaayTooLongText")
]);
self.selectedOptions = ko.observableArray([]);
self.showSelectedOptions = function(){
alert(self.selectedOptions());
//what I would like to have:
//if (self.selectedOptions().length > 0)
// alert(self.selectedOptions()[0].Name);
}
}
ko.applyBindings(new ViewModel());
Run Code Online (Sandbox Code Playgroud)
以及演示的小提琴链接:http://jsfiddle.net/c63Bb/1/
我需要添加或更改什么,以便数组selectedOptions包含对象而不是字符串?
试试这样的html
<select
data-bind="
options: options,
selectedOptions : selectedOptions,
optionsText: 'Name',
optionsCaption: 'Choose...'
"
size="5" multiple="true"></select>
Run Code Online (Sandbox Code Playgroud)
请参阅控制台以获取输出
要将属性添加到您需要使用的选项optionsAfterRender.
这仅在3.1.0版中可用.我注意到你的小提琴正在使用3.0.0.
<select
data-bind="
options: options,
selectedOptions : selectedOptions,
optionsText: 'Name',
optionsAfterRender: $root.setTitle
"
size="5" multiple="true"></select><br />
<button data-bind="click: showSelectedOptions">Show selection</button>
Run Code Online (Sandbox Code Playgroud)
并创造一个功能
self.setTitle = function(option, item) {
option.title = item.Name
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6923 次 |
| 最近记录: |