Nic*_*nco 4 javascript jquery datetimepicker angularjs angularjs-directive
我正在为一个jQuery日期选择器插件制作一个AngularJS指令,它应该在datepicker日期发生变化时更新ng-model.
这是迄今为止的代码:
angular.module('bootstrap-timepicker', []).directive('timepicker', [
function() {
var link;
link = function(scope, element, attr, ngModel) {
element.datetimepicker();
element.on('dp.change', function(event) {
// update ngModel ?
});
};
return {
restrict: 'A',
link: link,
require: 'ngModel'
};
}
]);
Run Code Online (Sandbox Code Playgroud)
考虑到在调用事件时scope,element,attr,ngModel不可用,如何在'dp.change'事件中更新ngModel?
谢谢!
Pan*_*kar 17
这是肯定的,任何添加到角度的插件都不会更新ng-model角度范围,我们需要在它的jquery更改事件上手动执行.在角度jquery插件中,应始终使用指令绑定到DOM,因为指令确实可以很好地控制DOM.
正如你在你的问题中提到的那样ngModel,element并且scope对象在dp.change事件中不可用datetimepicker,我不认为这在指令链接函数中是可能的,你必须做了别的事情或者你错过了在问题中解释.
对于udpating ng-model of date picker,您需要在dp.change活动中添加以下代码
element.on('dp.change', function(event) {
//need to run digest cycle for applying bindings
scope.$apply(function() {
ngModel.$setViewValue(event.date);
});
});
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我们从事件对象中检索更新的日期,然后分配给$viewValue(视图中的实际字符串值)ng-model,之后为了更新到每个ng-model使用此变量的地方,我们需要使用$apply()on指令手动运行摘要周期链接功能范围.我们运行摘要周期背后的原因是,我们需要将该值推入ng-model变量$modalValue(模型中的值,控件绑定到的值).
如果您需要更多信息,请告诉我,我会告诉您详细信息,谢谢.
| 归档时间: |
|
| 查看次数: |
3437 次 |
| 最近记录: |