0

我有以下剑道下拉列表:

<div class="slds-form-element" id="eventSubjectItem" style="text-align: center;">
                    <label class="slds-form-element__label" for="eventSubjectContainer" style="color: white; font-size: 15px;">Choose Event Field To Be Used To Label Event:</label>
                    <div id="eventSubjectBorder" style="border-top: 2px solid #f48942;"></div>
                    <div class="slds-form-element__control">
                        <div id="eventSubjectContainer">
                            <input data-role="dropdownlist" id="eventSubject" data-text-field="commonName" data-value-field="apiName" data-bind="source: eventFields, value: selectedField" style="margin-top: 10px; margin-bottom: 15px;"/>
                        </div>
                    </div>
                </div>

然后我在javascript中的可观察绑定:

eventSubjectObservable = kendo.observable({
                    selectedField: '{!orgEventLabel}',
                    eventFields: allEventFields,
                    eventLabelChange: function(){
                        console.log(this.get('selectedField'));   
                    }
                });
kendo.bind($('#eventSubject'), eventSubjectObservable);

当试图在我的 html 下拉列表元素中将“事件:{change:eventLabelChange}”添加到数据绑定时,我得到处理程序未定义错误,当它显然是(有趣的是,我有另一个具有相同类型绑定的下拉列表在此页面上,与更改事件完美配合...)。

另外...我无法获得默认值。我尝试在绑定后直接在可观察对象之外设置下拉列表值,然后触发更改事件,但没有发生任何事情。

当 commonName = 'Subject' 和 apiName = 'Subject' 我做 dropdownlist.data('kendoDropDownList').value('Subject') 它有 -1 索引,因为它找不到具有该值的项目,即使显然有一个……我真的不明白这个绑定发生了什么。

有谁知道当文本和值字段不是整数而是字符串时如何设置默认值?它显然无法弄清楚传递给 value() 的字符串与其中一项的值相同......

4

1 回答 1

0

使用事件绑定并将更改绑定到 eventLabelChange 方法。还将属性添加为 data-auto-bind=true

<input data-role="dropdownlist" id="eventSubject" data-text-field="commonName" data-value-field="apiName" data-bind="source: eventFields, value: selectedField, events:{change:eventLabelChange}" data-auto-bind="true" style="margin-top: 10px; margin-bottom: 15px;"/>

于 2018-03-15T14:18:29.677 回答