Javascript 将初始下拉列表值设置为viewmodel
我在下拉列表中遇到一些问题,我需要将初始值传递给viewmodel。只是想澄清一下:我正在处理一个编辑表单,所以dropdownlist将填充一个已经选择的值 到目前为止,我得到的是: 剃刀:Javascript 将初始下拉列表值设置为viewmodel,javascript,html,knockout.js,Javascript,Html,Knockout.js,我在下拉列表中遇到一些问题,我需要将初始值传递给viewmodel。只是想澄清一下:我正在处理一个编辑表单,所以dropdownlist将填充一个已经选择的值 到目前为止,我得到的是: 剃刀: //删除razor代码 foreach(长度preValue中的var preValue) { if(lengthPreValue.Contains(preValue.value)) { @前值 } 其他的 { @前值 } } 我的viewmodel如下所示: var editOfferV
//删除razor代码
foreach(长度preValue中的var preValue)
{
if(lengthPreValue.Contains(preValue.value))
{
@前值
}
其他的
{
@前值
}
}
我的viewmodel如下所示:
var editOfferViewModel = {
// Properties omitted
selectedLength: ko.observable("")
};
ko.applyBindings(editOfferViewModel);
虽然这在选择新值时确实有效,但在设置初始值时我有点卡住了。我很幸运地在stackoverflow.com上从Ryan Niemeyer那里得到了一些帮助,包括复选框和创建自定义BindingHandler,但我仍然很幸运
老实说,很难弄明白
因此,在此方面的任何帮助和/或提示都将不胜感激 一种常见且简单的方法是将模型值序列化到页面。这将类似于:
var viewModel = {
choices: ko.observableArray(@Html.Raw(Json.Encode(Options))),
selectedChoices: ko.observableArray(@Html.Raw(Json.Encode(SelectedOptions)))
};
然后,只需在select上使用标准数据绑定,如:
data-bind="options: choices, selectedOptions: selectedChoices"
然后,您甚至不需要在Razor中填充选项元素
如果您的
viewModel
是在外部文件中构建的,那么您只需在视图中设置可观测值(加载外部脚本后)我的数据类似于:
dataList = [ {name:'length1',id:1},{name:'length2',id:2},{name:'length3',id:3},{name:'length4',id:4},{name:'length5',id:5} ]
我一直在使用下拉列表中的数据,如下所示:
<select name="xxx" id="xxxid" data-bind="options: dataList, value: selectedLength , optionsText: 'name', optionsValue: 'id', optionsCaption: 'Please Select...'"></select>
<select name="xxx2" id="xxxid2" data-bind="options: dataList, selectedOptions: multiSelectedLength , optionsText: 'name', optionsValue: 'id', optionsCaption: 'Please Select...'" size="5" multiple="true"></select>
var editOfferViewModel = {
selectedLength: ko.observable(),
multiSelectedLength: ko.observableArray()
};
ko.applyBindings(editOfferViewModel);
$(document).ready(function() {
// Set initial value
editOfferViewModel.selectedLength(2);
// Set inital multi value
editOfferViewModel.multiSelectedLength(['2','3']);
});
var editOfferViewModel={
selectedLength:ko.observable(),
多选长度:ko.observearray()
};
ko.应用绑定(editOfferViewModel);
$(文档).ready(函数(){
//设定初始值
editOfferViewModel.selectedLength(2);
//设置初始多值
editOfferViewModel.multiSelectedLength(['2','3']);
});
可以使用“值”属性设置初始值
这是工作表