2013-10-12 61 views
0

我有一個基本的表單。在裏面,我有兩個領域(下拉和文本框)的行爲是相互依賴的。我想根據下拉列表中的更改重置文本框。此外,我想添加/集成到DOM作爲一個新的元素,使有效性等可以照顧,也就是說我可以使用我的$髒隱藏/顯示消息。 。使用角度驗證表格

+1

一些代碼嗎? – fabrizioM

+0

角處理根據字段的有效性自動添加類。如果你只是試圖基於$ dirty/$ valid創建樣式,那麼你可以直接在你的css中使用這些類(這裏描述http://docs.angularjs.org/api/ng.directive:form)。如果您試圖根據有效性顯示元素,則可以使用此處描述的方法(http://docs.angularjs.org/api/ng.directive:form.FormController)來監視特定字段及其狀態。這將沿着這些線ng-show =「formName.fieldName。$ dirty && formName.fieldName。$ invalid」 – ntlarson

回答

0

使用ng-model$watch

<select ng-model="dropdown" ng-options="**"><!-- --></select> 
<textbox ng-model="textbox"></textbox> 


$scope.$watch('dropdown', function() { 
    $scope.textbox = ''; 
}); 

http://docs.angularjs.org/api/ng $ rootScope.Scope#$看

+0

這不是一個理想的解決方案,就好像該下拉範圍變量在其他地方被更改,它將重置文本字段。這在大多數情況下不太可能,但仍然不理想。 Angular提供了一個跟蹤更改的指令。使用ng-change ='textbox =「」'來處理重置。如果您試圖將文本字段更改爲所選選項的值。然後簡單地將它們綁定到相同的模型。或者,如果您想要更復雜的表達式,則可以將ng-change綁定到可以處理範圍值更改的範圍聲明函數。 – ntlarson

+0

@ntlarson真的。然而,從我從這個問題中瞭解的情況來看,$ watch會給出預期的效果,因爲這些值是內在依賴的,而不是元素。 –

0

兩件事情:

  1. 爲了有一個值是依賴於其他,只聽第一個的ng-change事件,然後更新第二個綁定的變量。例如:

    $scope.selectChanged = function() { $scope.textValue = ''; }

  2. 做驗證,一個方法,我喜歡採取的是有一個「錯誤」元素聲明和只顯示/隱藏在需要的時候。

這裏有一個快速片段,說明這兩種方法 http://jsfiddle.net/marplesoft/ULhVS/