如何在事件上对jquery上的ng模型进行指令更新
How to make a directive update ng-model on jquery on event?
我正在为jQuery日期选择器插件编写AngularJS指令,该插件应在日期选择器日期更改时更新ng模型。
这是迄今为止的代码:
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'
};
}
]);
考虑到调用事件时scope、element、attr、ngModel不可用,我如何在"dp.change"事件中更新ngModel?
谢谢!
可以肯定的是,任何添加到angular的插件都不会更新angular scope的ng-model
,我们需要在它的jquery更改事件上手动更新。在angular中,jquery插件应该始终使用指令绑定到DOM,因为该指令确实提供了对DOM的良好控制。
正如您在问题中所问的,ngModel
、element
和scope
对象在datetimepicker
的dp.change
事件中不可用,我认为这在指令链接函数中是不可能的,您一定是做了其他事情,或者您错过了在问题中解释。
对于日期选择器的udpating模型,您需要在dp.change
事件上添加以下代码
element.on('dp.change', function(event) {
//need to run digest cycle for applying bindings
scope.$apply(function() {
ngModel.$setViewValue(event.date);
});
});
在上面的代码中,我们从事件对象中检索更新的日期,然后将其分配给ng-model
的$viewValue
(视图中的实际字符串值),然后为了将其更新到使用过该ng-model
变量的其他位置,我们需要在指令链接函数作用域上使用$apply()
手动运行摘要循环。我们运行摘要循环的原因是,我们需要将该值推送到ng-model
变量$modalValue
中(模型中的值,控件绑定到该值)。
工作Plunkr
如果你还需要什么,请告诉我,我会给你详细信息,谢谢。
看看这个demo
http://jsfiddle.net/TheRodeo/taujuuq2/3/这可能会让您了解如何进行
- 如何将ng选项的索引作为angularJs中的值传递给模型
- 角度无线电按钮ng模型不起作用
- ng模型内的ng重复的ng重复开始
- 将输入值设置为ng模型属性[Angular]时出现问题
- 自定义指令中的AngularJS ng模型
- 如何为动态创建的文本区域中输入的值更新ng模型
- ng重复中的ng模型-初始化唯一作用域属性
- ng重复变量到ng模型
- 初始化ng模型时,Angular ui选择占位符不起作用
- 角度去抖动(ng模型选项)不起作用
- 即使 ng 模型有值,也使输入字段为空
- 选择框中带有关联的ng模型,选项中带有ng重复
- 为什么我的指令(使用链接)没有出现,并允许ng模型看到它
- NG-重复中断指令模型绑定
- AngularJS+IE 11+聚合物=ng模型未更新
- ng模型在$(element).clone()之后不起作用
- 为什么ng选项指令需要ng模型
- AngularJS ng下拉树结构的模型定义
- AngularJS:如何将视图中指定的模型(ng-bind)绑定到通过API可用的$资源
- 内有角度单选按钮模型ng重复