Vui lòng xem phần Xem bên dưới và bộ điều khiển bên dưới. Trên sự kiện ng-change trên các phần tử bộ chọn ngày, các hàm được gọi là thay đổi giá trị xác định giới hạn trên hoặc dưới của giá trị khác.
Tôi biết rằng tôi cần vẽ lại thanh công cụ kendo để xem giá trị cập nhật và tôi nên làm theo chỉ thị nhưng kinh nghiệm hạn chế của tôi khiến tôi bị kẹt. Tôi giả định phạm vi $. $ Apply() được gọi sau khi cập nhật phạm vi sẽ làm điều đó nhưng nó không thực hiện thủ thuật.
Tôi nên làm điều này như thế nào theo kiểu góc?
// 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);
}
}]);
Công cụ chọn đầu tiên hạn chế công cụ chọn thứ hai chọn từ tháng trước tháng được chọn đầu tiên. Thứ hai hạn chế người đầu tiên lựa chọn một tháng sau tháng được chọn thứ hai. Thats logic anyway. Bạn vui lòng hiển thị một ví dụ về cách sử dụng k-rebind để làm cho các trình tạo ngày tháng vẽ lại với các giá trị tối thiểu/tối đa mới. Tôi không thể tìm thấy bất kỳ tài liệu phong nha về điều này. Chúc mừng. – hally9k
Tôi không chắc chắn có bất kỳ tài liệu nào, xem các nhận xét này: https://github.com/kendo-labs/angular-kendo/issues/10#issuecomment-20073069 và https://github.com/kendo-labs/angular-kendo/issues/33 # issuecomment-20264067 – morloch
+1 cho lỗi cực lớn ... – marapet