Javascript 在下拉列表中存储选项值时,是否可以显示选项文本?
这是我当前的代码Javascript 在下拉列表中存储选项值时,是否可以显示选项文本?,javascript,knockout.js,Javascript,Knockout.js,这是我当前的代码 var模型=函数(){ this.nameSomething=ko.可观察(“”); this.nameId=ko.observable(0); }; var vm=(函数(){ var myList=[{id:1,类型:'foo1'},{id:2,类型:'foo2'},{id:3,类型:'foo3'}], selectedModel=ko.可观察(模型); 返回{ myList:myList, selectedModel:selectedModel }; }()); ko.
var模型=函数(){
this.nameSomething=ko.可观察(“”);
this.nameId=ko.observable(0);
};
var vm=(函数(){
var myList=[{id:1,类型:'foo1'},{id:2,类型:'foo2'},{id:3,类型:'foo3'}],
selectedModel=ko.可观察(模型);
返回{
myList:myList,
selectedModel:selectedModel
};
}());
ko.应用绑定(vm)代码>
显示此项:
存储此项:
这是直接不可能的。至少有三种可能的方法:
使用在数组中按键查找值的computed(可以是pureComputed)
创建一个可观察对象,并向更新该可观察对象的nameId
订阅一个函数
您可以使用绑定和订阅,也可以从绑定observableArray
中当前选择的选项获取值,但这只是另一种选择
这是针对您的问题的解决方案,您可以使用第一个选项在viewmodel中使用该结构
var vm2=(函数(){
var list=ko.observableArray(
[{id:1,键入:'foo1'},
{id:2,键入:'foo2'},
{id:3,键入:'foo3'}]
);
var selectedId=ko.observable();
var selectedType=ko.pureComputed(函数(){
return list().find(函数(l){return l.id==selectedId();}).type;
});
返回{
列表:列表,
selectedId:selectedId,
selectedType:selectedType
};
})();
ko.应用绑定(vm2)代码>
显示此项:
存储此项:
这是直接不可能的。至少有三种可能的方法:
使用在数组中按键查找值的computed(可以是pureComputed)
创建一个可观察对象,并向更新该可观察对象的nameId
订阅一个函数
您可以使用绑定和订阅,也可以从绑定observableArray
中当前选择的选项获取值,但这只是另一种选择
这是针对您的问题的解决方案,您可以使用第一个选项在viewmodel中使用该结构
var vm2=(函数(){
var list=ko.observableArray(
[{id:1,键入:'foo1'},
{id:2,键入:'foo2'},
{id:3,键入:'foo3'}]
);
var selectedId=ko.observable();
var selectedType=ko.pureComputed(函数(){
return list().find(函数(l){return l.id==selectedId();}).type;
});
返回{
列表:列表,
selectedId:selectedId,
selectedType:selectedType
};
})();
ko.应用绑定(vm2)代码>
显示此项:
存储此项:
解决方案是使用整个对象作为“选定值”。然后,您可以轻松地将“显示”的内容与“存储”的内容区分开来
var defaultItem={
id:1,
类型:“foo1”,
};
var vm=(函数(){
var myList=[{id:1,类型:'foo1'},{id:2,类型:'foo2'},{id:3,类型:'foo3'}],
selectedModel=ko.可观察(默认项);
返回{
myList:myList,
selectedModel:selectedModel
};
}());
ko.应用绑定(vm)代码>
显示此项:
存储此项:
解决方案是使用整个对象作为“选定值”。然后,您可以轻松地将“显示”的内容与“存储”的内容区分开来
var defaultItem={
id:1,
类型:“foo1”,
};
var vm=(函数(){
var myList=[{id:1,类型:'foo1'},{id:2,类型:'foo2'},{id:3,类型:'foo3'}],
selectedModel=ko.可观察(默认项);
返回{
myList:myList,
selectedModel:selectedModel
};
}());
ko.应用绑定(vm)代码>
显示此项:
存储此项:
您可以选择不识别选项值,这会将所选值设置为完整对象,您可以随心所欲。。。包括所有可用的财产(如果我没有弄错你的问题)
显示此项:
存储此项:
在这里查看我的小提琴您可以选择不识别选项值,这会将所选值设置为完整对象,您可以随心所欲。。。包括所有可用的财产(如果我没有弄错你的问题)
显示此项:
存储此项:
在这里查看我的小提琴我也在考虑使用computed/pureComputed,但列表来自数据库,我不确定如何执行。你认为你可以展示#1和#2的例子吗?你可以提供代码例子吗?对于reference@BoyPasmo我已经包括了一个样品。第二个sholud be obviousI也在考虑使用computed/pureComputed,但是这个列表来自数据库,我不知道如何做。你认为你可以展示#1和#2的例子吗?你可以提供代码例子吗?对于reference@BoyPasmo我已经包括了一个样品。第二个问题显然是一个很好的解决方案。我不知道!!我懂了。我认为“价值”的价值与“期权价值”相同。是吗?选项value
是一个可选键/函数,您可以使用它来确定选择该选项时“所选值”应该是什么。默认情况下,您的“选定值”将是选中列表中的对象。此行为记录在此处。很好的解决方案。我不知道!!我懂了。我认为“价值”的价值与“期权价值”相同。是吗?选项value
是一个可选键/函数,您可以使用它来确定选择该选项时“所选值”应该是什么。默认情况下,您的“选定值”为w
<div data-bind="with: selectedModel">
<select data-bind="options: $root.myList,
optionsText: 'type',
value: nameSomething"></select><br />
Display this: <span data-bind="text: nameSomething().id"><br />
Store this: <span data-bind="text: nameSomething().nameId"><br /> <!-- not displaying anything -->
<pre data-bind="text: ko.toJSON($root.selectedModel, null, 2)"></pre>
</div>