angularJS 与日期选择器关联(不是 JQuery UI 日期选择器而是其他)
angularJS associated with datepicker (not JQuery UI Datepicker but something else)
我正在尝试将 angularJS 与来自此站点的日期选择器相关联:http://freqdec.github.io/datePicker/
根据文档,这就是它如何根据 Id 创建日期选择器,它只能通过 Id 来完成,而不是 class,而不是 jquery obj.
datePickerController.createDatePicker({
formElements:{
"inp1":"%d/%m/%Y"
}
});
我正在创建一个指令来执行此操作:
.directive('datepicker', function() {
return {
restrict : 'A', // the directive is restricted to an attribute
require : 'ngModel',
link : function(scope, element, attrs, ngModelCtrl) { // the link() function is used to setup the datepicker
// http://freqdec.github.io/datePicker/
var id = attrs.id;
var dateFormat = "%m/%d/%Y";
var fe = {}
fe[id + ''] = dateFormat;
datePickerController.createDatePicker({
// Associate the text input to a MM/DD/YYYY date format
formElements : fe
});
}
}
})
当我调试时,在调用之前
datePickerController.createDatePicker({
// Associate the text input to a MM/DD/YYYY date format
formElements : fe
});
明白了
$(id)
returns空。
[]
然后我意识到没有创建 html 元素,因为我看到了
element
类似于
<input class="col-xs-10 noPadding datepicker ng-pristine ng-untouched ng-valid" datepicker="" id="{{'licEffDate'+$index}}" ng-model="license.licEffDate">
元素中的 id 尚未计算。
但我只能准备好这个 ID 才能将其传递到日期选择器中。
有办法解决这个问题吗?
你需要做两件事
transclude:true
在指令中,第二个需要将对 datepicker()
的调用包装在 $timeout
中以延迟尝试,直到下一个 angular 循环运行,确保转换的 ID 设置在DOM.
Source
帮助 Fiddle
我正在尝试将 angularJS 与来自此站点的日期选择器相关联:http://freqdec.github.io/datePicker/ 根据文档,这就是它如何根据 Id 创建日期选择器,它只能通过 Id 来完成,而不是 class,而不是 jquery obj.
datePickerController.createDatePicker({
formElements:{
"inp1":"%d/%m/%Y"
}
});
我正在创建一个指令来执行此操作:
.directive('datepicker', function() {
return {
restrict : 'A', // the directive is restricted to an attribute
require : 'ngModel',
link : function(scope, element, attrs, ngModelCtrl) { // the link() function is used to setup the datepicker
// http://freqdec.github.io/datePicker/
var id = attrs.id;
var dateFormat = "%m/%d/%Y";
var fe = {}
fe[id + ''] = dateFormat;
datePickerController.createDatePicker({
// Associate the text input to a MM/DD/YYYY date format
formElements : fe
});
}
}
})
当我调试时,在调用之前
datePickerController.createDatePicker({
// Associate the text input to a MM/DD/YYYY date format
formElements : fe
});
明白了
$(id)
returns空。
[]
然后我意识到没有创建 html 元素,因为我看到了
element
类似于
<input class="col-xs-10 noPadding datepicker ng-pristine ng-untouched ng-valid" datepicker="" id="{{'licEffDate'+$index}}" ng-model="license.licEffDate">
元素中的 id 尚未计算。
但我只能准备好这个 ID 才能将其传递到日期选择器中。
有办法解决这个问题吗?
你需要做两件事
transclude:true
在指令中,第二个需要将对 datepicker()
的调用包装在 $timeout
中以延迟尝试,直到下一个 angular 循环运行,确保转换的 ID 设置在DOM.
Source
帮助 Fiddle