我有這樣定義的簡單下拉列表以獲得劍道下拉列表控件中的文本:無法使用MVVM從另一個視圖模型
<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 ?
}
}
});
我的問題是,我沒有抓住從窗口視圖模型所選文本的方式:
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;
},
始終返回第一個選項。
我相信我的問題是我試圖從另一個viewmodel獲取一個viewmodel的當前值。
任何想法如何做到這一點?
將其複製到演示請 – 2015-02-11 14:55:24
我試圖創建一個jsfiddle演示,但有太多的錯誤,它是一個大型項目的一部分,這是非常困難的提取這個簡單的場景 – Nick 2015-02-11 15:36:25