前陣子困擾了一個問題,想利用angular.js製作一個動態表單,可是這動態表單裡會使用到ng-repeat(select)

angular.js DOM上的處理與JQuery相比就稍稍有點不太同了,所以在此附上實作的code。(ng-contorller與angular基礎的設定就不貼上囉)

HTML  

<div id="list" ng-repeat="(key, select) in selectArray track by $index">
  <div>
    <label>商品</label>
    <select name="commodity[]" >
      <option ng-repeat="(key, value) in commodity" value="{{value.id}}">{{value.commodity}}</option>
    </select>
  </div>
  <!-- data-ng-if 影響下方新增跟刪除按鈕的出現 -->
  <span ng-click="add_list()" data-ng-if="$first">
    新增
  </span>
  <span data-ng-if="!$first" data-ng-click="remove($index)">
    刪除
  </span>
</div>

代碼整體上是很簡短的,重點就在於黃色區塊的ng-repeat selectArray是會對應到angular.js裡的$scope.selectArray。

然後在js段裡只要再給他設定為array之後再做push,就會產生出下一行新的資料。

新增與刪除的按鈕呈現,也請注意橘色區塊,這邊的意思是一個很簡單的判斷,判斷是否為第一個,是第一個即呈現,不是第二個即不呈現。

Angular.js

//json資料

$scope.commodity = [{

  id : 1,

  commodity : "First"

},{

   id :2,

  commodity : "Two"

},{

  id :3,

  commodity : "Three"

},{

  id :4,

  commodity : "Four"

}]


$scope.selectArray = [1];
$scope.add_list = function()
{
    $scope.selectArray.push($scope.selectArray.length+1);
}

$scope.remove = function(index){
 $scope.selectArray.splice(index,1)
}

最後刪除按鈕也是把selectArray使用上splice,就能成功刪除該行元素。

以上就是一個很簡單又實用的angular動態表單~!

arrow
arrow

    Bruce 發表在 痞客邦 留言(0) 人氣()