Tidak bisa mendapatkan teks dalam kontrol dropdownlist kendo menggunakan MVVM dari model tampilan lain

Saya memiliki daftar dropdown sederhana yang didefinisikan seperti ini:

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

Dan di div lain saya memiliki jendela pop up sederhana:

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

dan semuanya dibungkus dalam 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 ?            
            }
        }
    });

Masalah saya adalah saya tidak punya cara untuk mengambil teks yang dipilih dari model tampilan Jendela:

this.MessageWindow = kendo.observable({
        actions: ["Close"],
        getSelectedAction: function (e) { return that.ActionMenu.get("selectedActionText"); }
    });

Jika saya melakukan sesuatu seperti ini:

var ddlActionList = that.kWidgetHelper.getWidgetInstance("ddlActionList");
ddlActionList.text();

Itu selalu mengembalikan teks pertama "Opsi A", bukan yang dipilih.

Tampaknya mudah untuk dilakukan, tetapi sejauh ini saya tidak mungkin mengambil teks yang dipilih.

Saya juga mencoba:

  this.actionList[this.get("selectedAction")].text which produces an error.

Saya juga mencoba:

selectedActionText:  function(event) {
            return event.sender.text();
        }

Itu tidak berhasil.

Juga

 selectedActionText: function() {
            return that.ActionMenu.actionList[that.ActionMenu.selectedAction].text;
        },

Selalu mengembalikan Opsi pertama.

Saya yakin masalah saya adalah saya mencoba mendapatkan nilai saat ini dari satu model tampilan dari model tampilan lain.

Adakah ide bagaimana melakukan itu?


person Nick    schedule 11.02.2015    source sumber
comment
tolong salin ke demo   -  person Lars Höppner    schedule 11.02.2015
comment
Saya mencoba membuat demo jsfiddle tetapi ada terlalu banyak kesalahan, ini adalah bagian dari proyek besar dan sangat sulit untuk mengekstrak skenario sederhana ini   -  person Nick    schedule 11.02.2015


Jawaban (1)


Metode text() dari DDL akan berfungsi jika pilihan DDL telah berubah, maka teks yang bersangkutan akan ditampilkan.

Hasilnya juga harus sama jika Anda menggunakan metode dataItem() dan kemudian mengeluarkan properti text darinya.

person Petur Subev    schedule 11.02.2015
comment
Itu hanya akan berfungsi jika Anda mengikatnya dalam model tampilan yang sama. Tetapi jika saya memanggil this.ActionMenu.SelectedText di dalam this.MessageWindow maka itu tidak akan pernah berubah. Semakin saya membacanya, menjadi jelas masalah komunikasi lintas model yang menurut Kendo tidak mungkin dilakukan. - person Nick; 12.02.2015
comment
Saya menerima ini karena ternyata tidak didukung oleh kendo dan Anda harus mengikat ke model tampilan yang sama - person Nick; 07.04.2015