【问题标题】:Jquery Timepicker doesn't update model in AngularJS directiveJquery Timepicker 不会更新 AngularJS 指令中的模型
【发布时间】:2015-12-24 08:48:33
【问题描述】:

当我按下任何键盘键时,例如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  />

由于模型未更新,我无法验证时间。 注释代码是我尝试更新的值。

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 您是否正确定义了模块,我可以看到您使用了模块语法的getter。
  • 是的,当我从下拉列表中选择一个值时它正在工作,唯一的问题是它自动设置值时模型值没有更新。
  • 我认为你做对了,元素的绑定发生了变化,尽管你应该使用“$scope.$apply()”(前面有一个 $ 就像你传递它一样在函数中)而不是“scope.$apply()”。看看angular-ui.github.io/bootstrap/#/timepicker :)
  • 我无法访问 $scope 或更改事件中的范围。
  • 你可以在这里找到更好的解释stackoverflow.com/a/29194068/2435473

标签: jquery angularjs angularjs-directive


【解决方案1】:

发生这种情况是因为 timepicker 更改输入字段的值(可能使用 $("input").val("newval"))不会触发 angular 正在侦听的任何事件以启动摘要循环。

我很自发地找到了您可能想要使用的angular-jquery-timepicker。查看它的源代码,它好像在监听一个changeTime 事件:

element.on('changeTime', function () {
  $scope.$apply(function () {
    $scope.model = element.val();
  });
});

changeTime 事件也是documented(参见“事件示例”)。

Plunkr 中尝试一下。事实证明,监听change 事件也可以。

【讨论】:

  • 我已经知道这个库,但我需要知道我的代码中有什么问题,即触发了更改事件但链接器参数在其中无法访问。
  • 什么意思,它们在里面是不可访问的?您收到什么错误消息?
  • 另外,应该是$scope而不是scope,我刚刚看到你的参数是这样调用的。
  • 在那种情况下,我不知道您所说的“参数不可访问”是什么意思。从 JavaScript 的角度来看,如果你在链接函数中运行代码,我认为你不可能访问 $scope
  • 你是对的,它必须被访问,但由于某种原因它不是,顺便说一句,我能够运行代码而没有任何未定义的对象异常
猜你喜欢
  • 1970-01-01
  • 2020-03-03
  • 1970-01-01
  • 2012-12-31
  • 2014-07-22
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多