Javascript 角度链接功能是否触发更改事件?
我有一个带有Javascript 角度链接功能是否触发更改事件?,javascript,jquery,angularjs,angularjs-directive,Javascript,Jquery,Angularjs,Angularjs Directive,我有一个带有link函数的Angular指令,在它里面我实例化了一个jQuery插件,如图所示 问题是,指令每实例化一次,就会触发一个change事件,我有一个函数监听那些change事件(当用户触发它们时) 链接功能是否总是触发更改?还是jQuery插件在做这件事?我正在接收一个值(来自Ajax请求)并将其放入输入中。插件不应该“接触”它,它应该只是实例化datepicker 另一点是:让我们考虑插件改变了输入。这是一个程序性的更改,ng change指令不会侦听这些程序性更改,对吗?否,链接
link
函数的Angular指令,在它里面我实例化了一个jQuery插件,如图所示
问题是,指令每实例化一次,就会触发一个change
事件,我有一个函数监听那些change
事件(当用户触发它们时)
链接
功能是否总是触发更改
?还是jQuery插件在做这件事?我正在接收一个值(来自Ajax请求)并将其放入输入中。插件不应该“接触”它,它应该只是实例化datepicker
另一点是:让我们考虑插件改变了输入。这是一个程序性的更改,
指令不会侦听这些程序性更改,对吗?ng change
链接
功能不会触发更改事件。此代码正在触发更改事件:
$datepicker = $(element).datepicker({
format: "dd/mm/yyyy",
startDate: 'today',
language: 'pt-BR',
autoclose: true,
todayHighlight: true,
forceParse: false
});
$datepicker.datepicker('setDate', date);
这实际上改变了模型$scope.date
,这就是调用ng change
的原因
这将回答这个问题:
另一点是:让我们考虑插件改变了输入。 这是一个程序性更改,而ng change指令没有 听听这些程序性的变化,对吗
换言之: 基本上,您是在链接过程中更改输入的格式 事件 您可以在实际更改发生时告诉edit()
函数,或者只需执行一个简单的watch
操作,而不使用ngChange
指令
$scope.$watch('date', function(newValue, oldValue) {
if(newValue!=oldValue&&newValue!='25/12/2018'){
console.log(newValue);
console.log(oldValue);
$scope.changed = true;
}
});
依我看,如果可以的话我不会在项目中使用任何jQuery
您应该使用角度ui日期选择器
关于Angular和jQuery:
DOM操纵停止尝试使用jQuery修改中的DOM
控制器。真正地这包括添加元素、删除元素、,
检索它们的内容,显示和隐藏它们。使用内置的
指令,或在必要时编写自己的命令,以执行DOM
操纵有关复制功能,请参见下文
如果你正在努力打破习惯,考虑删除jQuery 你的应用程序。真正地Angular拥有$http服务和强大的 几乎总是不必要的指令。这是捆绑的 jQLite有一些在写作中最常用的特性 角度指令,尤指绑定到事件的指令
好啊我想用
手表
代替ng change
,但是我会有很多手表(我有一个项目列表,每个项目都有日期属性),这会使我的UI变慢…@VictorLeal不要使用手表
。我只是建议你watch
作为解决办法。我的主要答案是停止使用jQuery并在项目中导入,这样就不需要像您这样配置datepicker
。我正在做一些测试!