无法使用来自另一个视图模型的 MVVM 在 kendo 下拉列表控件中获取文本
Unable to get text in kendo dropdownlist control using MVVM from another viewmodel
我有一个简单的下拉列表,定义如下:
<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 中,我有一个简单的弹出窗口 window:
<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();
总是returns第一个文本"Option 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;
},
总是returns第一个选项。
我认为我的问题是我试图从另一个视图模型获取一个视图模型的当前值。
知道怎么做吗?
如果 DDL 选择发生变化,DDL 的 text() 方法应该执行此操作,它应该显示相应的文本。
如果您使用 dataItem() 方法然后从中获取文本 属性,结果也应该相同。
我有一个简单的下拉列表,定义如下:
<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 中,我有一个简单的弹出窗口 window:
<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();
总是returns第一个文本"Option 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;
},
总是returns第一个选项。
我认为我的问题是我试图从另一个视图模型获取一个视图模型的当前值。
知道怎么做吗?
如果 DDL 选择发生变化,DDL 的 text() 方法应该执行此操作,它应该显示相应的文本。
如果您使用 dataItem() 方法然后从中获取文本 属性,结果也应该相同。