Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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
Jquery时间选择器不更新AngularJS指令中的模型_Jquery_Angularjs_Angularjs Directive - Fatal编程技术网

Jquery时间选择器不更新AngularJS指令中的模型

Jquery时间选择器不更新AngularJS指令中的模型,jquery,angularjs,angularjs-directive,Jquery,Angularjs,Angularjs Directive,当我按下任何键盘键(例如0)时,如果我失去焦点,它会自动设置为控制为00:00,但不会更新模型值 angular.module('test').directive('timePicker', [function () { return { restrict: 'A', require: 'ngModel', scope: { model: '=ngModel' }, link: function ($scope, element, attrs, ngModelCtrl

当我按下任何键盘键(例如0)时,如果我失去焦点,它会自动设置为控制为00:00,但不会更新模型值

angular.module('test').directive('timePicker', [function () {
return {
  restrict: 'A',
  require: 'ngModel',
  scope: {
    model: '=ngModel'
  },
  link: function ($scope, element, attrs, ngModelCtrl) {

    element.timepicker({'timeFormat' : 'H:i'});

    ////element.on('change', function () {
    ////  scope.$apply(function () {
    ////    scope.model = element.datepicker('getTime');
    ////  });
    ////});


    ////$scope.$watch('model', function (newValues, oldValues, scope) {
    ////  console.log("Nothing here");
    ////});       
  }
}
}]);



<input id="startTime" type="text" name="startTime" data-ng-model="vm.data.StartTime" time-picker  />
我无法验证时间,因为模型未更新。 注释代码是我试图更新的值


关于如何解决这个问题有什么想法吗?

之所以会发生这种情况,是因为计时器选择器可能使用$input.valnewval来更改输入字段的值,而不会触发angular正在侦听的任何事件来启动摘要循环

自发地,我可以找到一个你可能想要使用的。查看其源代码,它似乎正在侦听changeTime事件:

changeTime事件也可参见“事件示例”


试试这个。事实证明,监听更改事件也能起作用。

您是否正确定义了模块,正如我所看到的,您使用了模块语法的getter。是的,当我从下拉列表中选择一个值时,它会起作用,唯一的问题是当模型值未更新时,它会自动设置值。我认为您是对的,通过更改时元素的绑定,尽管您应该使用$scope.$apply,前面有一个$,就像在函数中传递它一样,而不是在scope.$apply中。请看一看:我无法访问$scope或change event内部的scope。您可以在这里找到更好的解释我已经知道这个库,但我需要知道我的代码中有什么错误,即触发了change event,但链接器参数在其中不可访问。什么意思,它们在其中不可访问?您收到了什么错误消息?而且,应该是$scope而不是scope,我刚才看到您的参数就是这样调用的。在这种情况下,我不知道您所说的“参数不可访问”是什么意思。从JavaScript的角度来看,我认为如果在link函数中运行代码,就不可能无法访问$scope。你是对的,它必须被访问,但由于某些原因它不是,顺便说一句,我能够在没有任何未定义对象异常的情况下运行代码
element.on('changeTime', function () {
  $scope.$apply(function () {
    $scope.model = element.val();
  });
});