【问题标题】:How to enable a MVVM-disabled Kendo DropDownList?如何启用禁用 MVVM 的 Kendo DropDownList?
【发布时间】:2016-06-22 03:48:42
【问题描述】:

<select id="ddlFailureCategory" class="full-width"
        required="required"
        data-required-msg="@(String.Format(Resources.Error.RequiredField, Resources.Wording.FailureCategory))"
        data-bind="source: DataSource.FailureCategoryDropDown, value: ViewModel.FailureCategory, disabled: Layout.isDisabled"
        data-role="dropdownlist"
        data-value-primitive="true"
        data-value-field="Code"
        data-text-field="Description">
</select>

我有一个使用 MVVM 绑定初始化的下拉列表,它按预期被禁用。

现在在某些情况下,我想在其他控件触发的某些事件中以编程方式启用此下拉列表。

在那个事件处理程序中,我调用了这一行:

$("#ddlFailureCategory").data("kendoDropDownList").enable(true);

如 API Kendo DropDownlist API: enable 中所写

但是它不起作用,下拉列表仍然被禁用,同时没有任何 JavaScript 错误。

我也尝试直接在 Chrome 开发者控制台中输入 JavaScript,找到元素,.data() & .enable() 被调用,没有任何错误。

我的方法有什么问题,如何实现预期的行为?谢谢

【问题讨论】:

    标签: javascript asp.net-mvc kendo-asp.net-mvc kendo-mvvm


    【解决方案1】:

    要扩展@AndreiDragotoniu 的答案,如果Layout 是您的视图模型,您需要将isDisabled 设置为false

    但要做到这一点,您需要以 Layout.set('isDisabled', false); 的身份进行,直接赋值不会触发双向绑定的相应事件。

    【讨论】:

      【解决方案2】:

      下拉菜单的禁用状态由

      控制
      Layout.isDisabled
      

      所以当你想要的条件满足的时候设置为false。

      Layout.isDisabled = false;
      

      如果你使用 MVVM 然后使用 MVVM,不要试图绕过它来获得你需要的东西。

      【讨论】:

      • 我认为您误解了问题...我将其设置为 false 因为我希望最初禁用它,但之后我想启用它(但失败),这就是问题所在。 ..
      • @Shole,Andrei 的建议是继续使用 isDisabled。例如。 Disabled 设置为 true,禁用下拉菜单。 Disabled 设置为 false 启用下拉菜单。本质上启用和禁用是 2 个不同的属性。这就是双向绑定的美妙之处。
      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 2017-12-25
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多