面临从模型中设置下拉列表值的问题
Posted
技术标签:
【中文标题】面临从模型中设置下拉列表值的问题【英文标题】:Facing issue with setting value for dropdown list from Model 【发布时间】:2016-07-26 13:47:29 【问题描述】:我正在将 MVC 与 KnockoutJs 一起使用,但遇到了 value
绑定问题。
@html.DropDownListFor(m => m.PrimarySubspecialty, Model.PrimarySubspecialties, new id = "ddUserDetailsPrimarySubSpeciality", style = "width:245px;height:25px;", @class = "nmc-select", data_bind = "options: primarySubSpecialities,optionsText: 'Name',optionsValue: 'Id',value:PrimarySubspecialty" )
我不确定为什么模型中的 PrimarySubspecialty
值没有绑定到下拉选择的值。
这是我的js代码:
this.PrimarySubspecialty = Ko.observable($('#ddUserDetailsPrimarySubSpeciality').val());
this.primarySubSpecialities = ko.observableArray([]);
function loadPrimarySubSpecilaities()
$.ajax(
type: 'GET',
url: primarySubSpecialityUrl,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
processdata: false,
cache: false,
success: function (data)
primarySubSpecialities = [];
try
if (data.length == 0)
primarySubSpeacilityDropdownId.empty();
model.primarySubSpecialities(data);
);
请告诉我如何将值设置为PrimarySubSpeciality
下拉菜单。
【问题讨论】:
【参考方案1】:当使用异步方法填充下拉列表或选择列表时,您必须小心避免在列表填充之前绑定所选值。
如果您更改列表,Knockout 将仅保留列表中存在的绑定值。如果没有,该值将被设置为undefined。
要更正您的代码,请将值保存在变量中,并仅在列表填充后设置可观察的:
var holdingValue = $('#ddUserDetailsPrimarySubSpeciality').val();
this.PrimarySubspecialty = Ko.observable();
然后在列表填满后设置值:
model.primarySubSpecialities(data);
model.PrimarySubspecialty(holdingValue);
我已经做了一个快速的 JSFiddle 测试页面来证明这一点:https://jsfiddle.net/Quango/0bxaqLf8/
【讨论】:
以上是关于面临从模型中设置下拉列表值的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jquery 和 php 从动态数据中设置默认下拉列表?