ฉันมีรายการแบบเลื่อนลงอย่างง่ายที่กำหนดไว้ดังนี้:
<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>
และทั้งหมดนี้รวมอยู่ใน div ActionMenu
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;
},
ส่งคืนตัวเลือกแรกเสมอ
ฉันเชื่อว่าปัญหาของฉันคือฉันกำลังพยายามรับค่าปัจจุบันของวิวโมเดลหนึ่งจากวิวโมเดลอื่น
มีความคิดใด ๆ ที่จะทำเช่นนั้น?