我有这个日期选择器
http://jsfiddle.net/kevinj/TAeNF/2/
Current有这样的代码
'use strict';
angular.module('core').directive('jqdatepicker', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ngModelCtrl) {
element.datepicker({
dateFormat: 'dd/mm/yy',
onSelect: function (date) {
scope.date = date;
scope.$apply();
}
});
}
};
});
我正在使用它
<input type="text" ng-model="date" jqdatepicker />
<br/>
{{ date }}
我的问题是我想在多个地方使用它,它们可以有不同的模型,如
model=date1
,model=date2
有没有办法制作那个通用的,以便它可以在模型上工作,而不是硬件代码
scope.date = date;
答案 0 :(得分:2)
使用ngModel控制器设置值,而不是在默认范围指令中设置范围变量。如果要更新任何范围属性并且希望使其可重用,则不应使用默认范围选项(当未提及当前范围的默认值时,与范围:false相同),或者如果您需要ngModel,则只需使用ngModel控制器实例。在你的情况下,3个关键的事情是: -
//Set $viewvalue property of ngModel
ngModelCtrl.$setViewValue(date);
//Update the input with the ngmodel view value or in otherwords render it.
ngModelCtrl.$render();
//Update any bindings invoking digest cycle
scope.$apply();
尝试:
datePicker.directive('jqdatepicker', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ngModelCtrl) {
element.datepicker({
dateFormat: 'DD, d MM, yy',
onSelect: function (date) {
//Set viewvalue and apply it to update the input
ngModelCtrl.$setViewValue(date);
ngModelCtrl.$render();
//Update bindings
scope.$apply();
}
});
}
};
});
<强> Demo 强>