2015-02-11 4 views
0

У меня есть простой выпадающий список, определенный как это:Невозможно получить текст в кендо управления DropDownList с помощью MVVM из другого 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 У меня есть простое всплывающее окно:

<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> 

, и все это завершено под DivX 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(); 

, который всегда возвращается первый текст «Вариант А», а не выбранный.

Это казалось бы легким делом, но до сих пор я не могу захватить выделенный текст.

Я также попытался:

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; 
     }, 

всегда возвращает первый вариант.

Я считаю, что моя проблема в том, что я пытаюсь получить текущее значение одной модели просмотра из другой модели.

Любые идеи, как это сделать?

+0

Скопируйте его в демо-версию –

+0

Я пытаюсь создать демонстрационную версию jsfiddle, но ошибок слишком много, это часть большого проекта, и извлечь этот простой сценарий очень сложно. – Nick

ответ

0

Метод text() DDL должен выполнять работу, если выбор DDL был изменен, он должен отображать соответствующий текст.

Результат также должен быть таким же, если вы используете метод dataItem(), а затем получаете свойство текста из него.

+0

Это будет работать, только если вы свяжетесь их в той же viewmodel. Но если я вызову this.ActionMenu.SelectedText внутри this.MessageWindow, то он никогда не изменится. Чем больше я читаю в нем, тем труднее понять проблему с перекрестными моделями, претензия Kendo невозможна. – Nick

+0

Я принимаю это, потому что, как оказалось, он не поддерживается kendo, и вам нужно привязываться к одной и той же viewmodel – Nick

 Смежные вопросы

  • Нет связанных вопросов^_^