更改控制器angularJS时,$ watch无法正常工作

时间:2017-07-18 10:10:37

标签: javascript angularjs angularjs-directive datepicker angularjs-scope

我为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中使用并更改范围值不起作用。

0 个答案:

没有答案