2014-06-20 27 views
0

我試圖使用AngularJS驗證來驗證一個簡單的窗體,但是我遇到了麻煩,讓我的ng-class根據input是否髒髒來顯示正確的類。然後,當我查看頁面的實際HTML時,<form>標籤甚至不在文檔中!AngularJS窗體不在HTML中

<form novalidate name="infoForm"> 
      <p>To start, provide some basic information about the project.</p> 

       <ul class="ulFormGeneral"> 
        <li> 
         <label>Company name</label> 
         <input id="CompanyName" ng-class="{ cvError : infoForm.CompanyName.$dirty }" ng-model="form.CompanyName" name="CompanyName" maxlength="100" type="text" required /> 
        </li> 
       </ul> 


      </form> 

我想加入到這個inputcvError類,如果它是髒的,但是當我在瀏覽器中看看這個什麼都不會發生。我在做什麼錯誤導致<form>剛離開DOM,然後不能使用我的Angular表達式?

+0

你可以上傳這個問題的小提琴嗎?看起來合法.. – GabrielG

回答

0

歡迎來到Angular世界,無需任何形式!在這裏,模型是國王。看起來問題是ng-modelng-class指向不同的地方。

點在一切form.CompanyName(假設是型號名稱是形式在$範圍):

<input id="CompanyName" ng-class="{ cvError : form.CompanyName.$dirty }" ng-model="form.CompanyName" name="CompanyName" maxlength="100" type="text" required /> 

ng-model結合到$scope。當您更改輸入字段時,它會自動更新$ scope。無需填寫表格或點擊提交按鈕即可獲取數據。 $範圍隨每個關鍵筆劃更新。

controller應該確定如何處理模型中的變化。例如,您可以將一個ng-click添加到一個按鈕,該按鈕觸發由控制器定義的功能以保存模型。

+0

我完全理解了雙向綁定。我想我只是不知道Angular拿出你的'

'標籤。仍然不知道爲什麼當我嘗試打印'infoForm.CompanyName。$ valid'時未定義'infoForm' –

+0

Angular對標記沒有做任何特殊處理。就它而言,這只是正常的標記。 – mguymon

+0

這是不正確的。要訪問「form.CompanyName」,您需要「form」作爲您的* form *名稱,而不是$ scope中的模型名稱。 – GabrielG