【问题标题】:Knockout Kendo dropdownlist get text of selected itemKnockout Kendo 下拉列表获取所选项目的文本
【发布时间】:2016-05-25 16:07:13
【问题描述】:

我的应用程序是 MVC 5。我正在使用以下 Knockout Kendo 下拉列表:

     <input data-bind="kendoDropDownList: { dataTextField: 'name',
 dataValueField: 'id', data: foodgroups, value: foodgroup }" />
         <hr />
         Selected: <strong data-bind="text: foodgroup"> </strong>

    <script>
        var ViewModel = function () {
            var self = this;
            this.foodgroups = ko.observableArray([
                { id: "1", name: "apple" },
                { id: "2", name: "orange" },
                { id: "3", name: "banana" }
            ]);
            var foodgroup =
            {
                name: self.name,
                id: self.id
            };
            this.foodgroup = ko.observable();
            ko.bindingHandlers.kendoDropDownList.options.optionLabel = " - Select -";
            this.foodgroup.subscribe(function (newValue) {
                alert(newValue.name);
            });
        };
        ko.applyBindings(new ViewModel());
    </script>

我正在尝试获取所选项目的文本。如果我使用 alert(newValue) 我得到 id,当我使用 newValue.name 或 newValue.Text 我得到未定义。

【问题讨论】:

    标签: javascript jquery asp.net-mvc knockout.js kendo-ui


    【解决方案1】:

    我认为KendoDropDownList() 不支持将复杂对象作为数据值。 那么我认为更好的方法是使用ko.utils.arrayFirst()

    为方便起见,我做了一个Jsfiddle example

    希望有帮助

    【讨论】:

    • 谢谢你,Marco,这太棒了。是否可以将 name 设置为 observable 并仅绑定名称?
    • 当我使用 ajax 填充下拉列表时: var data = db.FoodGroups.Select(c => new { id = c.FoodGroupID, name = c.FoodGroupName }).ToList();找不到名字?
    猜你喜欢
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 2023-03-29
    • 2012-08-23
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2011-04-02
    相关资源
    最近更新 更多