【问题标题】:.Net MVC and Kendo - conditionally bind div based on selected option.Net MVC 和 Kendo - 根据所选选项有条件地绑定 div
【发布时间】: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 将包含一个复杂对象,而不是字符串Option1Option2...
  • 它有效 - jsfiddle.net/GCf4L
  • 感谢 Artem,成功了!

标签: asp.net-mvc c#-4.0 knockout.js


【解决方案1】:

感谢 Artem 的评论,我得以修复它 - 我引用了 if:value()...并且需要引用模型中引用的值,而不是我在绑定参数中使用的名称(例如 testModel .value - 值是我需要引用的(在我的例子中是 xyzType,而不是数据绑定选项中使用的通用术语“值”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多