gpt4 book ai didi

angularjs - 获取剑道下拉列表的选定对象

转载 作者:行者123 更新时间:2023-12-04 13:27:24 25 4
gpt4 key购买 nike

我正在使用剑道下拉列表。更具体地说,我使用的是 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>

我的 Controller 具有以下内容:
$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 绑定(bind),此答案可能已过时。
正如 haly9k 的回答中提到的,现在有一个属性 k-ng-model可以处理这个,所以你会使用

k-ng-model="selectedSport"

代替
ng-model="selectedSport"

下面是以前的答案;如果您使用的是旧版本的 Kendo UI,这可能会或可能不会仍然相关:

我不认为您可以配置 kendo 小部件来存储 dataItem直接 - 在它下面仍然是 <select>具有原始值(value)。因此,您可能必须从小部件的数据源中获取 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);
};
}

这样,您可以使 Controller 不受 Kendo UI DataSource 特定代码的影响,而只使用 JS 数据类型。 (见 JSBin)

关于angularjs - 获取剑道下拉列表的选定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com