2015-06-10 23 views
0

我有一個包含可排序列表的表單。用戶可以添加,刪除和移動列表中的元素。無論何時對此列表進行更改,我想將其更改爲骯髒。是否有可能在angularJs中添加一個自定義元素作爲「表單元素」,以利用ng-dirty和ng-pristine?

我可以通過觀察執行$scope.formname.$setDirty();方法的列表上執行的每個動作來實現此目的,但我想知道是否有自定義指令來執行此操作。

例如,我有以下DOM:

<div class='my-list'> 
    <ul class='sortable-list'> 
     <li> 
      List Item 1 
     </li> 
     <li> 
      List Item 2 
     </li> 
     <li> 
      List Item 3 
     </li> 
    </ul> 
</div> 

該列表的形式內,並作爲模型中的一個列表存儲。我想我想要做的就是在這個列表中設置一個觀察者,並在表單狀態變爲髒時,然後保存表單狀態(可能只是回答了我自己的問題...)

+0

我不清楚你想達到什麼 - 如果我理解正確(假設你想要一些視覺通知,如果一個字段是空的/必需的),你不需要*指令來做到這一點。你可以用純粹的角度模板來做到這一點,例如在父元素上:'ng-class =「{'invalid':myform.someField。$ pristine || myform.someField。$ invalid}」' –

+0

謝謝,是的,不要認爲我解釋得很好。我添加了更多信息,並認爲我有一個答案。 – Sam

回答

0

這是通過使用實現:

 $scope.$watch(function() { return sequence.myList}, function (newValue, oldValue) { 
        // logic to check for change 
        $scope.formname.$setDirty(); 
    }); 

其中sequence是存儲表單部分狀態的服務。

相關問題