2017-02-03 23 views
2

小概述: 嗨,我工作的一所學校項目中,用戶可以選擇他/她可以在學校的計算機服務辦公室借了什麼物品。我已經完成了學生/教師可以插入他們的個人資料信息的申請表。我有關於anularjs中的複選框的問題。如何添加一個複選框的標識在角JS

我需要合計/總結的複選框的ID,以便它可以在數據庫上被插入作爲單個int不是一個數組。這裏是代碼和一些信息。

 $scope.chkItems = [ 
 
     { 
 
      id: 1, 
 
      name: 'Laptop', 
 
      value: null, 
 

 
     }, { 
 
      id: 2, 
 
      name: 'Headset', 
 
      value: null 
 
     }, { 
 
      id: 4, 
 
      name: 'Projector', 
 
      value: null 
 
     }, { 
 
      id: 8, 
 
      name: 'Tablet', 
 
      value: null 
 
     }, { 
 
      id: 16, 
 
      name: 'Speakers', 
 
      value: null 
 
     }]; 
 

 

 

 
$scope.save = function() { 
 

 
       var chkItemsValue = ''; 
 

 
       $scope.chkItems.forEach(function (Item) { 
 

 
        if (Item.value) { 
 
         chkItemValue += chkItem.id; 
 
        } 
 
       }) 
 
       
 
       }
<md-input-container class="md-block" flex-gt-sm> 
 
<label class="force-input-label">Items</label> 
 
</br> 
 
<div ng-repeat="chkItem in chkItems"> 
 
<md-checkbox name="chkItem.name" ng-model="chkItem.value" ng-true-value=1 ng-false-value=0>{{chkItem.name}} 
 
</div> 
 
</md-input-container>

我可以插入在數據庫上的價值,但該值是不同的,而不是獲得總我得到像輸出數組中的值。

  • 目前我正在此:

如果我檢查{筆記本電腦,投影儀,音箱} 總數將1416

  • 我想要什麼:

如果我檢查{筆記本電腦,投影儀,揚聲器} 總數將爲21

我是angularjs和web開發的新手。您的意見非常感謝!

ThankYOU!

回答

0

快速回答,不初始化您的計數器作爲一個字符串

var chkItemsValue = 0 // not '' 

Array.prototype.reduce答案

var chkItemsValue = $scope.chkItems.reduce((count, item) => { 
    return count + (item.value ? item.id : 0) 
}, 0) 
+0

感謝您的快速回復。 :) – BoogerT

+0

感謝您的快速回復。 :) WOW。花了我幾天的時間來檢查這一個。我檢查了我的舊代碼chkItemsValue設置爲零。也許這是改變時,我使用查找和替換。 非常感謝。這件事已經解決了謝謝! – BoogerT

相關問題