Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Parsing 如何在不输入任何字段的情况下触发角度分析器_Parsing_Angularjs_Triggers - Fatal编程技术网

Parsing 如何在不输入任何字段的情况下触发角度分析器

Parsing 如何在不输入任何字段的情况下触发角度分析器,parsing,angularjs,triggers,Parsing,Angularjs,Triggers,如主体所述,我如何触发动作在 modelController.$parsers(...) 没有用户输入。。。我能想到的唯一方法是将它们包装在函数中并调用它,但是有更好的触发方法吗 **//pseudo $(modelController).trigger('just got dirty');** 我需要它的原因是触发输入字段在提交页面上进行自我验证。这个问题对我来说也是实际的。。。因为我正在通过以下方式解决此问题: var triggerParsers = function() {

如主体所述,我如何触发动作在

modelController.$parsers(...) 
没有用户输入。。。我能想到的唯一方法是将它们包装在函数中并调用它,但是有更好的触发方法吗

**//pseudo
$(modelController).trigger('just got dirty');**

我需要它的原因是触发输入字段在提交页面上进行自我验证。

这个问题对我来说也是实际的。。。因为我正在通过以下方式解决此问题:

var triggerParsers = function() {
    var val = ngModel.$viewValue; 
    ngModel.$setViewValue(null);
    ngModel.$setViewValue(val);
};

我找到了一种解决方法-只需使用模型值调用解析器:

angular.forEach(ngModel.$parsers, function (parser) {
    parser(ngModel.$viewValue);
});

它非常简单,似乎是最正确的解决方案。

我相信答案是do元素。trigger('change');我尝试过使用element.trigger,但这个技巧不起作用,这是因为事件被触发,但值没有更改,因此角度不会启动解析器。这对我来说非常有效(版本1.2.29)-谢谢!为什么这个简单的答案不更普遍?要稍微改进答案,请使用本机
For
循环,而不是
角度。forEach
,检查解析器的
name
属性,仅重新触发所需内容,而不是所有内容(如果适用),并在触发所需内容后中断循环。然而,这些只是微观优化。