簡體   English   中英

AngularJs列表控件-如何避免設置表單的臟標志

[英]AngularJs list control - how to avoid setting form's dirty flag

我們有一個使用2個列表控件的mover指令。 問題是,當我只單擊分配的項目列表中的一個項目時,它會使我的表單變臟。 我在指令控制器onChanged事件(由第二個列表ng-change調用)中嘗試了以下解決方案:

  $scope.onChanged = function (assigned) { var currentState = $scope.form.$dirty; $scope.selectedItem = assigned[0]; if (currentState === false) $scope.form.$setPristine(); } 

但是,currentState已經為真,因此我的代碼不執行任何操作。 如何防止單擊列表控件來設置表單的臟狀態? 我發現了兩個相關的問題, 如何將控件排除在制作“骯臟”表單之外? 以及如何指示AngularJS中哪些輸入字段已更改,但是我不清楚我是否應該嘗試這兩種解決方案。 該代碼在一些地方檢查$ scope.form。$ dirty,因此最好的解決方案是以某種方式確保單擊列表不會使它變臟。 我也有noDirty指令,尚未嘗試將其應用於該列表。 我現在要嘗試。

我現在實現的解決方案是指令中的以下更改:

 var directive = { controller: ['$scope', '$timeout', function ($scope, $timeout) { $scope.upDisabled = true; $scope.downDisabled = true; $scope.assigned = null; $timeout(function () { $scope.form.assignedList.$pristine = false; }); 

基於該線程的最后一個答案阻止輸入設置形式$ dirty angularjs 在我的快速有限測試中,它似乎有效。 我最初嘗試僅在列表中使用我們的noDirtyCheck指令,但是由於某種原因,它在我的第一次嘗試中不起作用,因此我已經切換到該解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM