2016-06-22 39 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);,只是直接分配值不會觸發雙向綁定適當的事件。