我为datepicker控件创建了一个通用指令。这里我使用的是JQuery UI Datepicker。在我的指令中从数据库中检索数据时,范围。$ watch工作正常,但是当我在控制器中进行更改时,在范围内未检测到。$ wwatch
我的指示
common.directive("datepickerDate", function () {
return {
restrict: "A",
require: "ngModel",
link: function (scope, elem, attrs, ngModelCtrl) {
var updateModel = function (dateText) {
scope.$apply(function () {
ngModelCtrl.$setViewValue(dateText);
});
};
var options = {
dateFormat: "dd/mm/yy",
changeYear: true,
changeMonth: true,
onSelect: function (dateText) {
var dateParts = dateText.split('/');
updateModel(dateParts[2] + "/" + (dateParts[1] - 1) + "/" + dateParts[0]);
},
};
elem.datepicker(options);
scope.$watchCollection(ngModelCtrl, function () {
if (ngModelCtrl.$modelValue) {
elem.datepicker("setDate", new Date(ngModelCtrl.$modelValue));
}
}, true);
}
}
});
HTML代码
<tbody>
<tr ng-repeat="row in dateList">
<input type="text" ng-model="row.fromdate" datepicker-date />
</tr>
</tbody>
我的控制器:
angular.forEach($scope.dateList, function(data){
data.fromdate = "14/05/2016";
});
从数据库中检索时,$ watch正在工作,但我在angular.forEach中使用并更改范围值不起作用。