使用 KnockoutJS 获取下拉文本

Thu*_*wat 0 javascript knockout.js

我有一个这样的下拉列表:

                <select data-bind="options: movieInitValues,
                    optionsText: 'Text',
                    optionsValue: 'Value',
                    value: movieSelectedValue" id="movieSelectDDL"></select>
Run Code Online (Sandbox Code Playgroud)

一切正常,但是我想将下拉列表的文本捕获到模型的“movieSelectedName”属性中,以便稍后向用户显示一条不错的消息。有没有办法做到这一点?

感谢您的任何想法。

Jam*_*rpe 5

根据您的代码,看起来中的值movieInitValues有一个Text属性和一个Value属性。您已经告诉淘汰赛使用该Value属性作为movieSelectedValue通过使用optionsValue: 'Value'.

如果您需要在其他地方使用theTextValue属性,最好让 Knockout 存储在您的 observable 中选择的实际对象,然后在其他地方使用这些属性。如果删除optionsValue设置,它将存储对象:

<select data-bind="options: movieInitValues,
    optionsText: 'Text',
    value: movieSelected" id="movieSelectDDL"></select>
Run Code Online (Sandbox Code Playgroud)

然后,您可以基于movieSelected我刚刚创建的更新的observable在您的 VM 上创建两个计算的 observable :

vm.movieSelected = ko.observable();
vm.movieSelectedValue = ko.computed(function() { return vm.movieSelected().Value; } );
vm.movieSelectedText = ko.computed(function() { return vm.movieSelected().Text; });
Run Code Online (Sandbox Code Playgroud)

或者只是更新您的其他绑定以直接使用vm.movieSelected().Textand vm.movieSelected().Value