【发布时间】:2015-10-07 21:07:52
【问题描述】:
我们有一个使用 2 个列表控件的移动指令。问题是当我简单地单击分配项目列表中的项目时,它会使我的表单变脏。我在指令控制器 onChanged 事件(由第二个列表 ng-change 调用)中尝试了以下解决方案:
$scope.onChanged = function (assigned) {
var currentState = $scope.form.$dirty;
$scope.selectedItem = assigned[0];
if (currentState === false)
$scope.form.$setPristine();
}
但是,currentState 已经为真,所以我的代码什么也不做。如何防止单击列表控件来设置表单的脏状态?我发现了两个相关的问题How can I exclude controls from making form Dirty? 和How can I denote which input fields have changed in AngularJS,但我不清楚是否应该尝试这些解决方案中的任何一个。代码会在几个地方检查 $scope.form.$dirty,因此最好的解决方案是确保单击列表不会使其变脏。我也有 noDirty 指令,我还没有尝试将其应用于该列表。我现在要试试。
【问题讨论】:
标签: javascript angularjs forms