当前位置: 首页 > 面试题库 >

我如何表示AngularJS中哪些输入字段已更改

袁炳
2023-03-14
问题内容

我正在使用将数据放置到API的编辑表单(user.html),但是我想避免将所有数据放置在表单中。我只想输入已更改的项目。

我已经看到在处理表单时使用肮脏和原始的方法,但这适用于表单中的任何更改。我也看到了ng-
change的用法,但是我不想触发对一个元素进行更改的动作,只是表示更改后的元素应包含在PUT中。

有人找到一种仅表示已更改的输入字段的方法吗?


问题答案:

如果将输入formname属性一起放入,然后为输入赋予name属性,则还可以访问输入的$pristine属性。

<div ng-controller="MyController">
  <form name="myForm">
    <input type="text" name="first" ng-model="firstName">
    <input type="text" name="last" ng-model="lastName">
  </form>
</div>



app.controller('MyController', function($scope) {
  // Here you have access to the inputs' `$pristine` property
  console.log($scope.myForm.first.$pristine);
  console.log($scope.myForm.last.$pristine);
});

您可以$scope.myForm.$pristine用来查看是否有 任何 字段更改,以及$pristine表单上每个输入属性的属性来查看
该输入 是否已更改。您甚至可以遍历该myForm对象(非输入字段对象的键前缀为$):

angular.forEach($scope.myForm, function(value, key) {
  if(key[0] == '$') return;
  console.log(key, value.$pristine)
});
// first, true
// last, false


 类似资料:
  • 我在laravel 5中工作,我有一个模块,用户可以在其中更新学生的信息,因为用户有一个带有当前数据的预加载表单,并且可以修改他想要的字段。然后,在控制器中,我执行以下操作: 那工作得很好。所以我的问题是:有一种方法可以获得已经更新的字段的名称?

  • 问题内容: 我是新手。每当此字段发生“更改”时,我都试图从HTML“文件”字段中读取上载的文件路径。如果我使用“ onChange”,则可以使用,但是当我使用“ ng- change”以角度的方式使用时,则无法使用。 fileNameChaged() 从不调用。Firebug也不会显示任何错误。 问题答案: 不支持文件上传控件 https://github.com/angular/angular.

  • 创建一个在PHP服务器端无法理解的小管理员行更新程序。我希望sql查询只更新页面上已更改的$u POST字段,这样它就不会循环所有100条左右的记录。 我的做法如下: 1) jQuery侦听已更改的输入字段,然后为已更新的用户字段分配名称属性 2) PHP检测已设置更新的用户字段。 3) 在提交重新加载时,PHP检测到该输入,并按行ID更新SQL。如何确保PHP知道哪个输入字段指向哪个行ID? j

  • 问题内容: 有没有一种方法可以检查里面的道具发生了变化(没有在其他地方存储旧道具)? 即 问题答案: 请注意,该功能现已 弃用 。引用官方文件: 如果仅当属性更改时才用于重新计算某些数据,请改用备忘录助手。 这是指您的内部检查避免不必要地多次重新计算相同内容的情况。在链接的博客文章中,它建议将昂贵功能的结果缓存起来,以便可以查找它,而不是重新计算它。可以使用诸如memoize- one之 类的助手

  • 我正在尝试用Angular构建一个简单的计算器,如果我想的话,我可以覆盖总数。我有这部分的工作,但当我回去输入一个数字在一个或两个领域的总数没有在该领域的更新。 这是我的jsfiddlehttp://jsfiddle.net/YUza7/2/ 形式 javascript

  • 问题内容: 我有一个查询和一个表。该表的名称为OrderT,而查询的名称为SearchQ。查询在那里,所以我可以有一个子表单来显示表单上的搜索结果。尽管我的查询如果缺少任何字段中的任何数据,也不会在表上显示一行。例如,如果我有CustomerName,OrderNumber和OrderDueDate字段,而我填写了CustomerName,OrderNumber,但将OrderDueDate留为空