Lütfen aşağıdaki Kısmi Görünüm'ü ve aşağıdaki denetleyiciyi dikkate alınız. Tarih seçici öğeleri üzerindeki ng değişim olayında, çağrılan işlevler, diğerinin üst veya alt sınırlarını tanımlayan değeri değiştirir.
Güncel değeri görmek için kendo datepicker'ı yeniden çizmem gerektiğini ve bunu bir yönerge içinde yapmam gerektiğini biliyorum, ancak sınırlı deneyimim beni şaşırtıyor. $ kapsamı aldım. Kapsamın güncellenmesinden sonra çağrılan $ apply() bunu yapar, ancak hile yapmaz.
Bunu Açısal olarak nasıl yaparım? Kaynak kodu baktığımızda
// Home View
<button id="date-button" type="button" kendo-button ng-click="showModal();">
Variance Analysis
<br />
</button>
<div id="spinner" class="loading" style="display:none;">
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<div class="loading-dot"></div>
<div class="loading-dot"></div>
</div>
<div class="row">
<br />
<br />
<br />
<div class="col-lg-6 col-lg-offset-3">
<h1>Select Two Months to Compare</h1>
<br />
<br />
<br />
<div class="col-lg-6">
<input kendo-date-picker ng-model="dates.fromDate" k-ng-model="dates.actualFromDate" k-options="datePicker1Options();" ng-change="setMaxDate();" />
</div>
<div class="col-lg-6">
<input kendo-date-picker ng-model="dates.untilDate" k-ng-model="dates.actualUntilDate" k-options="datePicker2Options();" ng-change="setMinDate();" />
</div>
<div class="row">
<br />
<br />
<br />
<div class="col-lg-2 col-lg-offset-4">
<button kendo-button ng-click="go();" style="width:100%;">Go</button>
</div>
</div>
</div>
</div>
// Home Controller
app.controller('HomeCtrl', ['$scope', '$http', '$location', 'data', function ($scope, $http, $location, data) {
$scope.dates = {};
$scope.dates.untilDate;
$scope.dates.fromDate;
$scope.dates.actualUntilDate;
$scope.dates.actualFromDate;
$scope.minDate = new kendo.data.ObservableObject({
date: new Date(1970)
});
$scope.maxDate = new kendo.data.ObservableObject({
date: new Date()
});
$scope.setMaxDate = function() {
var date = new Date($scope.dates.actualFromDate);
date.setMonth(date.getMonth() + 1);
$scope.maxDate.date = date;
// $scope.$apply();
}
$scope.setMinDate = function() {
var date = new Date($scope.dates.actualUntilDate);
date.setMonth(date.getMonth() - 1);
$scope.minDate.date = date;
// $scope.$apply();
}
$scope.datePicker1Options = function() {
return {
animation: {
close: {
effects: "fadeOut zoom:out",
duration: 300
},
open: {
effects: "fadeIn zoom:in",
duration: 300
}
},
format: "MMM yyyy",
start: "year",
depth: "year",
min: $scope.minDate.date
}
}
$scope.datePicker2Options = function() {
return {
animation: {
close: {
effects: "fadeOut zoom:out",
duration: 300
},
open: {
effects: "fadeIn zoom:in",
duration: 300
}
},
format: "MMM yyyy",
start: "year",
depth: "year",
max: $scope.maxDate.date
}
}
$scope.go = function() {
data.fetch($scope.dates.fromDate, $scope.dates.untilDate, $http, $location);
}
}]);
İlk seçim, ikincisini, seçili aydan bir ay önce seçerek sınırlar. İkincisi, ilki, ikinci seçilen aydan bir ay seçerek sınırlar. Bu mantık zaten. Tarihçinin yeni min/maks değerleriyle yeniden çizilmesini sağlamak için k-rebind kullanmanın bir örneğini gösterir misiniz? Bu konuda iyi bir belge bulamıyorum. Şerefe. – hally9k
Herhangi bir doco olduğundan emin değilim, şu yorumları görün: https://github.com/kendo-labs/angular-kendo/issues/10#issuecomment-20073069 ve https://github.com/kendo-labs/angular-kendo/issues/33 # issuecomment-20264067 Ultra buggy için – morloch
+1 ... – marapet