這個答案可能已經過時了Kendo Angular綁定的當前版本。 作爲hally9k的答覆中提到,現在有一個屬性k-ng-model可以解決這個問題,所以你可以使用
k-ng-model="selectedSport"
到位
ng-model="selectedSport"
上一頁下面的答案;這可能會或可能不會仍然是相關的情況下,您使用的是舊版本的劍道UI的:
我不認爲你可以配置劍道部件直接存儲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);
};
}
這樣的話,你可以繼續從劍道UI數據源特定代碼的自由,而僅工作,JS數據類型的控制器。 (見JSBin)
您能否告訴我體育運動的「get」方法來自哪裏? –
@SLDev http://docs.kendoui.com/api/framework/datasource#methods-get –
您可以檢查JSBin上的代碼,因爲當前示例運行不正確,可能是angular-kendo.js的最新版本已經變了 ? –