我觉得我错过了一些非常基本的东西,但我不能得到一个下拉菜单的工作,因为我期望使用Knockout.js。
我有一组对象要在菜单中显示,我需要找到选定的选项并将其发布到服务器。我可以使菜单呈现,但似乎无法获得选定项的值。我的视图模型如下所示:
function ProjectFilterItem( name, id ) {
this.Name = name;
this.Id = id;
}
function FilterViewModel() {
this.projectFilters = ko.observableArray([
new ProjectFilterItem( "foo", "1" ),
new ProjectFilterItem( "bar", "2" ),
new ProjectFilterItem( "baz", "3" )
]);
this.selectedProject = ko.observable();
}
ko.applyBindings( new FilterViewModel() );
我视图标记如下所示:
<select
id = "projectMenu"
name = "projectMenu"
data-bind = "
options: projectFilters,
optionsText: 'Name', /* I have to enquote the value or I get a JS error */
optionsValue: 'Id', /* If I put 'selectedProject here, nothing is echoed in the span below */
optionsCaption: '-- Select Project --'
"
></select>
<b>Selected Project:</b> <span data-bind="text: selectedProject"></span>
如何使选定的菜单项显示在span中,并发布到服务器?(我假设在span中呈现的可观察对象与我发布的对象相同。)是否需要在ProjectFilterItem
中添加另一个属性,如this.selected = ko.observable(false);
?如果需要,如何将其声明为值的目标?
1条答案
按热度按时间oewdyzsn1#
您只需要使用
value
binding来绑定选定的值:从
options
documentation:注:对于多选列表,要设置选择了哪些选项或读取选择了哪些选项,请使用selectedOptions绑定。对于单选列表,还可以使用值绑定读取和写入所选选项。
在您的示例中:
请参阅Demo。