有几种方法可以做到这一点..
链接函数的参数上有一个ctrl
函数调用.$setViewValue(valueHere)
,您可以使用它来设置任何 ngModel 引用的值。它将完成设置 $dirty 等的工作。还有一个名为的属性,.$viewValue
您可以使用它来获取当前值。因此,您可以在隔离范围属性上设置 $watch 以更新 ngModel 值。
更正确的方法仍然是在链接函数中,但它看起来像这样:
app.directive('myDirective', function() {
restrict: 'E',
require: 'ngModel',
scope: {}, //isolate the scope
template: '<div class="datepicker-wrapper input-append">' +
'<input type="text" class="datepicker" ng-model="date" />' +
'<span class="add-on"><i class="icon-calendar"></i></span>' +
'</div>',
controller: function($scope) {
},
link: function(scope, elem, attr, ctrl) {
//get the value from ngModel
scope.date = ctrl.$viewValue;
//set the value of ngModel when the local date property changes
scope.$watch('date', function(value) {
if(ctrl.$viewValue != value) {
ctrl.$setViewValue(value);
}
});
}
});