Jquery时间选择器不更新AngularJS指令中的模型
当我按下任何键盘键(例如0)时,如果我失去焦点,它会自动设置为控制为00:00,但不会更新模型值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
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();
});
});