我正在测试非常棒的Knockoutjs。我面临着一个特殊的问题。
我发现了一个类似的问题:Binding initial/default value of dropdown (select) list,但它没有帮助,因为我的是级联列表。
我使用来自服务器的数据,使我的initialModel如下所示。
var initialModel = @Html.Raw(JsonConvert.SerializeObject(Model)) ;
然后我按如下方式定义我的viewModel。
var viewModel = {
evaluationGroups :ko.observableArray(initialModel.EvaluationGroups),
SelectedEvaluationArea:ko.observable(initialModel.selectedEvaluationArea ? initialModel.selectedEvaluationArea.Id :null ),
SelectedEvaluationGroup :ko.observable(initialModel.selectedEvaluationGroup)
}
现在,我想要级联select
列表。因此,我的约束力如下。
<fieldset>
<legend>Evaluation Group and Area</legend>
<p>
<select id="EvaluationGroupId" name="EvaluationGroupId" data-bind='options: evaluationGroups, optionsText:"Title", value:SelectedEvaluationGroup, optionsCaption: "Select Group..."'></select>
</p>
<p>
<select id="EvaluationAreaId" name="EvaluationAreaId" data-bind='options: SelectedEvaluationGroup()? SelectedEvaluationGroup().EvaluationAreas:null, optionsValue: "Id", optionsText:"Title", value:SelectedEvaluationArea, optionsCaption: "Select Area..."'></select>
</p>
</fieldset>
问题是,我无法从服务器数据中提取初始值。如果我看到viewModel.SelectedEvaluationGroup
的值,当页面刚刚加载时,默认值为undefined
。但是,如果我看到initialModel.selectedEvaluationGroup
,则它是完整对象,正如预期的那样。我究竟做错了什么?这不是初始化Knockout可观察量的正确方法吗?
答案 0 :(得分:0)
也许您忘记运行applyBindings命令了?
即
ko.applyBindings(viewModel);
我和你的jsfiddle打过一场比赛。似乎很高兴在手动设置为主数组中的初始值时绑定到初始值。