【发布时间】:2014-04-08 23:42:03
【问题描述】:
我几乎在那里!
我想根据所选值显示一个特定的 div。
例如,如果选择了selected value = "Option1",则显示对应的div。
我在数据绑定中尝试了以下内容:
data-bind="if"selectedValue() === 'Option1'"
我成功地能够使用 data-bind="visible" selectedValue" 进行切换,但两个 div 都显示。我想获取对象属性本身。
代码如下:
<select data-bind=", options: availableValues, optionsText: 'Name', value: selectedValue, optionsCaption: 'Select One'"></select>
<div data-bind="if:selectedFieldType() === 'Option1' ">
@Html.Partial("_Edit" + this.Model.Type)
</div>
<div data-bind="if:selectedFieldType() === 'Option2' ">
@Html.Partial("_Add" + this.Model.Type)
</div>
$(function () {
var testModel = {
availableValues: ko.observableArray(@Html.Json(Model.SelectedValueOptions)),
selectedValue: ko.observable(null))
};
testModel.value= ko.dependentObservable(function () {
if (this.selectedValue()) {
return this.selectedValue().Val;
}
}, testModel);
var tryGetValue = $.grep(testModel.availableSelectedValues(), function (item) {
return item.Val === '@Model.Value';
})[0] || null;
testModel.selectedValue(tryGetValue);
ko.applyBindings(testModel, $('#general-section')[0]);
});
【问题讨论】:
-
availableValues中的对象是什么样的?您可能需要在您的选择中使用optionsValue,否则您的selectedValue将包含一个复杂对象,而不是字符串Option1和Option2... -
它有效 - jsfiddle.net/GCf4L
-
感谢 Artem,成功了!
标签: asp.net-mvc c#-4.0 knockout.js