Diese Antwort ist wahrscheinlich überholt für aktuelle Versionen der Kendo Angular Bindungen. Wie in hally9k Antwort erwähnt, gibt es jetzt ein Attribut k-ng-model, die damit umgehen können, so würden Sie
k-ng-model="selectedSport"
anstelle von
ng-model="selectedSport"
vorherige Antwort unten verwenden; dies nicht noch kann oder auch für den Fall relevant sein, das Sie eine ältere Version von Kendo UI verwenden:
ich Sie glaube nicht, dass die Kendo-Widget das dataItem
direkt zu speichern, konfigurieren können - darunter alle noch ein <select>
mit einem primitiven Wert. Daher müssen Sie das dataItem wahrscheinlich aus der Datenquelle des Widgets abrufen, z. wie folgt aus:
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);
};
}
Sie können jedoch Ihre eigene Richtlinie für kendoDropDownList schaffen, die eine k-data-item
Attribut (zum Beispiel) verwendet und es wie folgt verwenden :
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);
};
}
Auf diese Weise Sie den Controller frei von Kendo UI Datasource-spezifischen Code und stattdessen nur die Arbeit mit JS Datentypen halten konnte. (Siehe JSBin)
Können Sie mir bitte sagen, woher die "Get" -Methode für den Sport kommt? –
@SLDev http://docs.kendoui.com/api/framework/datasource#methods-get –
Können Sie bitte überprüfen Sie den Code auf JSBin, weil das aktuelle Beispiel nicht korrekt ausgeführt wird, möglicherweise die neueste Version von angular-kendo.js wurde geändert ? –