2015-02-11 65 views
0

我有這樣定義的簡單下拉列表以獲得劍道下拉列表控件中的文本:無法使用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的當前值。

任何想法如何做到這一點?

+0

將其複製到演示請 – 2015-02-11 14:55:24

+0

我試圖創建一個jsfiddle演示,但有太多的錯誤,它是一個大型項目的一部分,這是非常困難的提取這個簡單的場景 – Nick 2015-02-11 15:36:25

回答

0

如果DDL選擇已更改,DDL的text()方法應執行該工作,它應顯示相應的文本。

如果您使用dataItem()方法,然後從中獲取文本屬性,結果也應該相同。

+0

這隻會工作,如果你綁定他們在相同的viewmodel。 但是,如果我在this.MessageWindow中調用this.ActionMenu.SelectedText,那麼它永遠不會改變。 我讀得越多,它就成爲了一個明確的交叉模型交流問題,Kendo聲稱這是不可能的。 – Nick 2015-02-12 10:08:10

+0

我接受這個,因爲事實證明,它不被kendo支持,你必須綁定到相同的viewmodel – Nick 2015-04-07 12:17:34

相關問題