angularjs – 获取Kendo下拉列表的选定对象
发布时间:2020-12-17 09:16:00 所属栏目:安全 来源:网络整理
导读:我正在使用Kendo下拉列表.更具体地说,我正在使用Kendo Angular指令.目前,我的标记中有以下内容: input id='myDropDownList' kendo-drop-down-list ng-model="selectedSport" k-data-source="sports" k-data-text-field="'name'" /button ng-click='send()'S
我正在使用Kendo下拉列表.更具体地说,我正在使用Kendo Angular指令.目前,我的标记中有以下内容:
<input id='myDropDownList' kendo-drop-down-list ng-model="selectedSport" k-data-source="sports" k-data-text-field="'name'" /> <button ng-click='send()'>Submit</button> 我的控制器有以下几点: $scope.selectedSport = null; $scope.sports: [ { id: 1,name: 'Basketball' },{ id: 2,name: 'Football' },{ id: 3,name: 'Tennis' } ]; $scope.send = function () { alert($scope.selectedSport); }; 当我运行此代码时,我获得selectedSport ID.但是,我想要整个对象.我发现的每个其他StackOverflow帖子都会检索ID.对于我的生活,我无法弄清楚如何获得对象.有谁知道如何获取所选的JSON对象而不仅仅是id? 谢谢!
对于当前版本的Kendo Angular绑定,这个答案可能已经过时了.
正如hally9k的回答中提到的,现在有一个属性 k-ng-model可以处理这个,所以你会使用 k-ng-model="selectedSport" 代替 ng-model="selectedSport" 以前的答案如下;如果您使用的是较旧版本的Kendo UI,这可能会或可能不会相关: 我不认为你可以配置kendo小部件直接存储dataItem – 在它下面所有仍然是< select>具有原始价值.因此,您可能必须从小部件的数据源获取dataItem,例如像这样: HTML: <div ng-controller="MyController"> <select id='myDropDownList' kendo-drop-down-list ng-model="selectedSport" k-data-source="sports" k-data-value-field="'id'" k-data-text-field="'name'"></select> <button ng-click='send()'>Submit</button> </div> JS: function MyController($scope) { $scope.selectedSport = null; $scope.sports = new kendo.data.DataSource({ data: [{ id: 1,name: 'Basketball' },{ id: 2,name: 'Football' },{ id: 3,name: 'Tennis' }] }); $scope.send = function () { var dataItem = $scope.sports.get($scope.selectedSport); console.log(dataItem); }; } 但是,您可以为kendoDropDownList创建自己的指令,该指令使用k-data-item属性(例如)并像这样使用它: HTML: <select id='date' k-ddl k-data-source="sports" k-data-text-field="name" k-data-item="dataItem"> JS: var app = angular.module('Sample',['kendo.directives']).directive("kDdl",function () { return { link: function (scope,element,attrs) { $(element).kendoDropDownList({ dataTextField: attrs.kDataTextField,dataValueField: "id",dataSource: scope[attrs.kDataSource],change: function () { var that = this; var item = that.dataItem(); scope.$apply(function () { scope[attrs.kDataItem] = item.toJSON(); }); } }); } }; }); function MyController($scope) { $scope.sports = [{ id: 1,name: 'Basketball' },{ id: 2,name: 'Football' },{ id: 3,name: 'Tennis' }]; $scope.dataItem = $scope.sports[0]; $scope.send = function () { console.log($scope.dataItem); }; } 这样,您可以使控制器不受Kendo UI DataSource特定代码的影响,而只能使用JS数据类型. (见JSBin) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |