AngularJS (13) <form name=""> 區分所屬表格

大家應該都看過表格取名,name
<form name="form1">

這有什麼幫助嗎?當然!當你撰寫多個表格時,如果沒有name,你可能要不時翻找這筆輸入來自哪個表格。

好比說,你做了三個表格:

<body ng-app="app1" ng-controller="Controller1">
   <form><input ng-model="username"/></form>
   <form><input ng-model="address"/></form>
   <form><input ng-model="phone"/></form>

   ...(這中間你可能還有一長串的html)

   {{username}}
   {{address}}
   {{phone}}
   <!--糟糕,這幾個東西來自哪個表格?-->
</body>

這可能造成你不容易修改表格,或是得反覆確認表格的值對應到哪個函式,例如:表格一的輸入要給變數甲,但是表格二的要給乙。挺累人吧?


若是表格加入name,AngularJS會把表格的名稱做為「區域名稱」,就能大大改善前述問題。

<body ng-app="app1" ng-controller="Controller1">
    <form name="form1"><input ng-model="form1.username"/></form>
    <form name="form2"><input ng-model="form2.address"/></form>
    <form name="form3"><input ng-model="form3.phone"/></form>
    
    <p> {{form1.username}} </p>
    <p> {{form2.address}} </p>
    <p> {{form3.phone}} </p>
    <!--馬上看出來自哪個表單,耶!-->
</body>

變數名稱

要小心,ng-model="form1.username" 是指變數叫做form1.username不是username。

   <!--HTML-->   
   {{form1.username}}

   <!--JS-->
   <script>
      alert($scope.form1.username);
   </script>
};

所以,ng-model 若沒有加上表格名稱,可能會和一般的變數搞混。

<form>
   <input ng-model="text"/>
</form>
    
<form name="form1">
   <input ng-model="text"/> <!--和前一個表格共用變數-->
</form>

<form name="form2">
   <input ng-model="form2.text"/>
</form>

<p> text: {{text}} <!--form1 修改到它--> </p>
<p> form1.text: {{form1.text}} <!--一直空白--> </p>
<p> form2.text: {{form2.text}} </p>

text: {{text}}

form1.text: {{form1.text}}

form2.text: {{form2.text}}

留言

這個網誌中的熱門文章

AngularJS (1) 宣告ng-app

href with relative url 在錨點使用相對路徑