2016-06-22 35 views
0

如何启用MVVM禁用的Kendo DropDownList?

<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()被调用时没有任何错误。

我的方法出了什么问题,我该如何实现预期的行为?由于

回答

0

下拉的禁用状态被

Layout.isDisabled 

控制,其设置为false在满足需要的条件。

Layout.isDisabled = false; 

如果您使用MVVM,那么请使用MVVM,不要试图绕过它以获得您所需的内容。

+0

我想你误解了这个问题......我把它设置为false,因为我希望它最初被禁用,但之后我想启用它(但失败了),那就是问题所在...... – shole

+0

@Shole ,安德烈所暗示的是继续使用isDisabled。例如。禁用设置为true,禁用下拉。如果将“禁用”设置为false,则会启用下拉菜基本上启用和禁用是2个不同的属性。这是2路绑定的美妙之处。 – seN

0

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

但是要做到这一点,你会想要做到这一点Layout.set('isDisabled', false);,只是直接分配值不会触发双向绑定适当的事件。