jQuery设置的值上的AngularJs无效形式

Posted

技术标签:

【中文标题】jQuery设置的值上的AngularJs无效形式【英文标题】:AngularJs invalid form on value set by jQuery 【发布时间】:2014-09-30 11:19:57 【问题描述】:

我正在使用相同的表单来编辑 ng-repeat 中存在的许多记录。 当我单击编辑按钮时,我只需执行以下操作:

$('#EvaluationQuestionId').val($scope.data.EvaluationQuestion[$index].id);

$('#EvaluationQuestionEvaluationTopicId').val($scope.data.EvaluationQuestion[$index].evaluation_topic_id);

$('#EvaluationQuestionName').val($scope.data.EvaluationQuestion[$index].name);

表单输入已正确填写,但我不明白为什么,AngularJs 模型不会像您手动输入这些输入时那样更新,并且会保留无效标签,直到您编写任何内容或在填充的选择输入中选择另一个选项.

我试过了

$scope.$apply();

还有在表格之前...

$scope.evaluationFormQuestions.$setPristine(true);

但是我已经没有精力和想法了……

【问题讨论】:

在角度中,您修改模型,并允许随后触发的摘要循环更新视图。在您的帖子中,您使用 jquery 直接更新视图。这在 Angular 世界中是不好的做法。 【参考方案1】:

好的,我已经更新了代码,并且按照 pixelbits 的建议,我将数据直接输入到模型中,而不是输入。它可以工作,而且代码更简单、更短。

所以...吸取的教训:阅读之前的所有文档...:)

https://docs.angularjs.org/guide/forms

【讨论】:

以上是关于jQuery设置的值上的AngularJs无效形式的主要内容,如果未能解决你的问题,请参考以下文章

angularjs怎样更改子作用域的值

JQuery UI滑块'slide'功能未设置angularJS值

AngularJS $ cookies 1.6.9无效

如果数据帧基于列值上的过滤器,则从字典中提取行数据

IE10+ 上的 AngularJS,带有占位符的文本区域导致“无效参数”。

同一页面上的两个 jQuery Ajax 调用,一个有效,另一个无效