【发布时间】:2017-07-22 09:50:27
【问题描述】:
我在表单上有一个设置表(例如复选框),用户可以添加和删除表行。 theForm.$dirty 会在用户更改设置(例如,选中或取消选中复选框)时设置,但如果将行添加到表中或从表中删除,则不会设置。我有一个例子https://plnkr.co/edit/sOXFnZjpkrcExvxGsEVg
我是一个相对较新的 Angular 开发人员,但我被警告说,如果可以避免的话,引用 $scope 并不是最佳实践。我认为在这种情况下,我可以让控制器依赖$scope,然后在修改表的函数中调用$scope.theForm.$setDirty()。我不确定这是我唯一的办法还是有更好的方法。
【问题讨论】:
-
无法查看您的 plnkr atm,但是您想知道表单是否脏的原因是什么?
-
立即使用是启用或禁用保存按钮。
-
有道理。接受的答案可以满足您的需要(将 $scope 排除在控制器之外),但您询问是否有“更好”的方法。您可以考虑询问您的模型是否脏,而不是/除了询问您的表单是否脏。我假设您的表 DOM 是由某种模型集合驱动的(对集合进行 ng-repeat)。如果是这样,您还可以将控制器方法(isModelDirty)绑定到 ng-disabled 并询问您的模型集合是否已更改。只是一个想法......
标签: javascript angularjs html-table dirty-data