0

我有一个这样定义的简单下拉列表:

<div id="ActionMenu">
   <input id="ddlActionList"
       data-role="dropdownlist"
       data-text-field="text"
       data-value-field="value"
       data-value-primitive="true"
       data-bind="value: selectedAction, source: actionList"/>
 </div>

在另一个 div 中,我有一个简单的弹出窗口:

<div id="window"
    data-role="window"
    data-title="Message panel"
    data-actions="['close']"
    data-bind="visible: isVisible, enabled: isEnabled">
<p>Action selected: <span data-bind="text: getSelectedAction()"></span></p>
</div>

它都包裹在一个 ActionMenu div 下。

this.ActionMenu = kendo.observable({
        actionList: [{ text: 'Option A', value : 0 },
                     { text: 'Option B', value : 1 },
                     { text: 'Option C', value : 2 },
                     { text: 'Option D', value : 3 }],
        selectedAction: 0,
        selectedActionText: function() {
            // return what ?            
            }
        }
    });

我的问题是我无法从 Window 视图模型中获取选定的文本:

this.MessageWindow = kendo.observable({
        actions: ["Close"],
        getSelectedAction: function (e) { return that.ActionMenu.get("selectedActionText"); }
    });

如果我做这样的事情:

var ddlActionList = that.kWidgetHelper.getWidgetInstance("ddlActionList");
ddlActionList.text();

这总是返回第一个文本“选项 A”,而不是选定的文本。

这似乎是一件容易的事,但到目前为止,我不可能抓住选定的文本。

我也试过:

  this.actionList[this.get("selectedAction")].text which produces an error.

我也试过:

selectedActionText:  function(event) {
            return event.sender.text();
        }

这是行不通的。

 selectedActionText: function() {
            return that.ActionMenu.actionList[that.ActionMenu.selectedAction].text;
        },

总是返回第一个选项。

我相信我的问题是我试图从另一个视图模型中获取一个视图模型的当前值。

任何想法如何做到这一点?

4

1 回答 1

0

如果 DDL 选择发生了变化,DDL 的 text() 方法应该会起作用,它应该显示相应的文本。

如果您使用 dataItem() 方法然后从中获取 text 属性,结果也应该相同。

于 2015-02-11T20:33:20.383 回答