AngularJS:不能忽略用户取消输入框后的更改事件
AngularJS: Can't ignore change event on an input field after user cancels with confirmation dialog
我正在尝试创建一个指令,每当输入字段(在本例中为无线电)上的值更改时,向用户显示确认消息。
所以如果选择了"normal",用户点击"tracked"然后取消确认框,我希望我的模型和视图都被设置回"normal"。
我的输入是这样的:
<form name="form1">
<input type="radio" id="blah" name="blah" ng-model="emailType" value="normal" ng-confirm-click="Are you sure you want to do that?">
<input type="radio" id="blah2" name="blah2" ng-model="emailType" value="tracked" ng-confirm-click="Really?">
</form>
使用ng-change对我来说真的不起作用,因为如果我在确认中说不,那就太晚了:值已经被更改了。
我试图跟随这个链接。我的指令现在是这样的:
我的指令是这样的:
app.register.directive('ngConfirmClick', [ function () {
return {
priority: -1,
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, modelCtrl) {
var message = attrs.ngConfirmClick;
modelCtrl.$parsers.push(function (inputValue) {
var modelValue = modelCtrl.$modelValue;
if (inputValue !== modelValue && message && !confirm(message)) {
modelCtrl.$viewValue = modelValue;
modelCtrl.$render();
}
return modelCtrl.$viewValue;
});
}
}
}]);
});
解析器在模型更改之前触发,我可以确认/取消我的确认框,我可以更改值。但是当函数返回时,我的模型最终会用新值更新。
我也尝试了$rollbackViewValue()根据我在网上看到的一个例子,但它不工作(函数未定义)。
我肯定我错过了一些非常重要的步骤。有人能帮帮忙吗?
找到你的问题了。
将modelCtrl.$viewValue = modelValue;
改为modelCtrl.$setViewValue(modelValue);
jsfiddle
相关文章:
- 是否可以为HTML5输入滑块触发oninput事件
- 使用onkeyup JS事件检查输入的值是否唯一
- 访问代码生成的输入元素上的keyup事件
- 无线电输入更改的jQuery事件未启动
- JS事件未更改输入禁用属性
- 在表单中的输入字段上提交事件
- 是否可以在数字输入框中的小按钮中添加事件侦听器
- 如何获取按钮点击事件输入的当前值
- 在放置目标时,输入并离开自定义事件
- 为什么不是't;输入“;此处触发事件
- 替代输入:基于按钮点击事件的文本更改处理程序
- 检查 jQuery 中的递增-递减事件输入类型编号
- Ng-model绑定触摸事件输入的值失败
- 从onkeyup事件输入触发JS函数
- 用于关键事件输入验证的Javascript正则表达式故障排除帮助
- Jquery在点击事件输入
- 如何检测javascript事件输入的变化
- 更改事件输入字符
- 触发多个事件/输入字段的功能并计算它们
- 组合组件上的onBlur事件(输入+按钮)