Asp.net mvc 如何为敲除的观察值设置初始值(对于级联列表)?
我正在测试非常棒的Knockoutjs。我面临一个特殊的问题 我发现了一个类似的问题:,但它没有帮助,因为我的是级联列表 我使用来自服务器的数据,按如下方式创建了我的初始模型Asp.net mvc 如何为敲除的观察值设置初始值(对于级联列表)?,asp.net-mvc,knockout.js,Asp.net Mvc,Knockout.js,我正在测试非常棒的Knockoutjs。我面临一个特殊的问题 我发现了一个类似的问题:,但它没有帮助,因为我的是级联列表 我使用来自服务器的数据,按如下方式创建了我的初始模型 var initialModel = @Html.Raw(JsonConvert.SerializeObject(Model)) ; 然后我定义我的viewModel如下 var viewModel = { evaluationGroups :ko.observableArray(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)
}
现在,我想要级联选择列表。因此,我的约束力如下
<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的值,当页面刚刚加载时,使用默认值,我看到未定义。但是,如果我看到initialModel.selectedEvaluationGroup,它就是完整的对象,正如预期的那样。我做错了什么?这不是初始化Knockout的可观察对象的正确方法吗?也许您忘记运行applyBindings命令了 i、 e 使现代化 我和你的朋友玩过了。当手动将初始值设置为主数组中的值时,似乎很乐意绑定到初始值
我建议你把jsfiddle.netts里的东西放在一起看看,安德鲁。实际上,我已经应用了绑定;只是我忘了在上面的示例代码中提到。除了最初的绑定之外,一切都很正常。看看JSFIDLE:我仍在学习击倒-所以我不确定为什么它不会绑定到您传递的值。不过,我还是在上面的答案中找到了答案——奇怪的是,谢谢你,安德鲁。我想,现在我会按照你的建议解决我的问题。我认为,由于selectedEvaluationGroup或selectedEvaluationArea与主数组中包含的对象不同,因此存在问题。就像在C中一样,我们可能需要定义一些检查这些对象是否相等的方法。我想知道是谁否决了你的答案。有什么办法可以看到这样的画面吗?
ko.applyBindings(viewModel);