Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度链接功能是否触发更改事件?_Javascript_Jquery_Angularjs_Angularjs Directive - Fatal编程技术网

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日期选择器

关于AngularjQuery

DOM操纵停止尝试使用jQuery修改中的DOM 控制器。真正地这包括添加元素、删除元素、, 检索它们的内容,显示和隐藏它们。使用内置的 指令,或在必要时编写自己的命令,以执行DOM 操纵有关复制功能,请参见下文

如果你正在努力打破习惯,考虑删除jQuery 你的应用程序。真正地Angular拥有$http服务和强大的 几乎总是不必要的指令。这是捆绑的 jQLite有一些在写作中最常用的特性 角度指令,尤指绑定到事件的指令


好啊我想用
手表
代替
ng change
,但是我会有很多手表(我有一个项目列表,每个项目都有日期属性),这会使我的UI变慢…@VictorLeal不要使用
手表
。我只是建议你
watch
作为解决办法。我的主要答案是停止使用jQuery并在项目中导入,这样就不需要像您这样配置
datepicker
。我正在做一些测试!