我一直在AngularJS了幾天現在正在探索,我想創建一個datepicker的。我撞到了一些還不完全清楚的事情。起初,這是我寫的我的日期選擇器代碼:AngularJS:渲染自己的模塊不止一次
angular.module('datepicker', []).directive('myDatepicker', function() {
return {
scope: {
clickCallback: '&',
options: '='
},
restrict: 'E',
templateUrl: 'datepicker.php',
link: function($scope, $element, $attr) {
$scope.day = 0;
$scope.month = 0;
$scope.year = 0;
$scope.years = [];
$scope.days = [];
$scope.months = getStandardMonths();
$scope.init = function() {
for (var i = 1; i <= 31; i++)
$scope.days.push({
value: i,
text: (i < 10) ? "0" + i : i
});
$scope.days.unshift({
value: 0,
text: "--"
});
$scope.months.unshift({
value: 0,
text: "--"
});
var year = new Date().getFullYear();
var start = year + 3;
var end = year - 50;
for (var j = start; j >= end; j--) {
$scope.years.push({
value: j,
text: j
});
}
$scope.years.unshift({
value: 0,
text: "--"
});
}
$scope.update = function() {
var last = 32 - new Date($scope.year, $scope.month - 1, 32).getDate();
if ($scope.day > last) {
$scope.day = last;
}
last++;
if ($scope.days.length > last) {
var shrink = $scope.days.length - last;
$scope.days.splice(last, shrink);
} else {
for (var i = $scope.days.length; i < last; i++)
$scope.days.push({
value: i,
text: i
});
}
if ($attr.partial) {
$scope.dism = !($scope.year);
$scope.disd = !($scope.month);
if (!$scope.year) {
$scope.disd = true;
$scope.day = $scope.month = 0;
}
if (!$scope.month) {
$scope.day = 0;
}
}
}
$scope.disd = $scope.dism = ($attr.partial === undefined) ? false : $attr.partial;
$scope.init();
}
};
});
這是我爲了使日期選擇器模塊寫的模板:
<select ng-model="day" ng-options="d.value as d.text for d in days" ng-visible="!disd"> </select>
<select ng-model="month" ng-options="m.value as m.text for m in months" ng-change="update()" ng-visible="!dism"></select>
<select ng-model="year" ng-options="y.value as y.text for y in years" ng-change="update()"></select>
而且我的使用,這是相當直前鋒:
<my-datepicker partial="true" />
現在,當我上面複製幾次線,它仍然呈現一個日期選擇控件(沒有多重datepickers顯示HTML頁面上)。我似乎無法理解爲什麼,如果任何人都可以在這裏提供一些線索,我會非常感激。
我有不同的項目清單,全部用自己的日期。我的下一個步驟將是列表中的對象的日期綁定到日期選擇器內的功能。
注:部分屬性是允許用戶不填寫完整的日期,但只用了一年或一年一個月。