Si prega di considerare la vista parziale sotto e il controller sotto. Nell'evento ng-change sugli elementi del selettore di date le funzioni chiamate cambiano il valore che definisce i limiti superiore o inferiore dell'altro.
So che ho bisogno di ridisegnare il DatePicker di Kendo per farlo vedere il valore aggiornato e che dovrei farlo in una direttiva, ma la mia esperienza limitata mi lascia bloccato. Ho ipotizzato $ scope. $ Apply() chiamato dopo che l'aggiornamento per l'ambito lo avrebbe fatto ma non ha funzionato.
Come devo fare questo in modo angolare?
// 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);
}
}]);
Il primo selettore limita il secondo a selezionare un mese prima del mese selezionato per primo. Il secondo limita il primo a selezionare un mese dopo il mese selezionato del secondo. Questa è la logica comunque. Ti preghiamo di mostrare un esempio dell'uso di k-rebind per far sì che i datepicker si ridisegnino con i nuovi valori min/max. Non riesco a trovare alcuna documentazione decente sulla cosa. Saluti. – hally9k
Non sono sicuro che ci sia qualche documento, vedere questi commenti: https://github.com/kendo-labs/angular-kendo/issues/10#issuecomment-20073069 e https://github.com/kendo-labs/angular-kendo/issues/33 # issuecomment-20264067 – morloch
+1 per ultra buggy ... – marapet