Angular javascript数组是空的?

时间:2015-09-21 06:37:46

标签: angularjs

Angular javascript数组是空的? 我有一个数据集数组绑定到角度范围列表 我需要检查一些复选框并将它们绑定到第二个角度范围的数组:

我的HTML:

<tr ng-repeat="item in pagedItems[currentPage]" 
    ng-controller="DealerComMaintainCtrl">
  <td align="center">

    <input type="checkbox" id="{{item.IdArticle}}" 
           ng-value="item.IdArticle" 
           ng-checked="selected.indexOf(item.IdArticle) > -1" 
           ng-click="toggleSelect(item.IdArticle)" />

  </td>
  <td>
    <a href="/Dealercoms/ArticleDownload?FileName={{item.FileName}}&IdArticle={{item.IdArticle}}" 
       class="btn btn-xs btn-total-red btn-label"><i class="ti ti-download"></i></a>
  </td>
  <td>{{item.DateArticle | date:'dd/MM/yyyy'}}</td>
  <td>{{item.Title}}</td>
  <td>{{item.Archive}}</td>
</tr>

控制器中的JS:

$scope.selected = [];

$scope.toggleSelect = function toggleSelect(code) {
  var index = $scope.selected.indexOf(code)

  if (index == -1) {
    $scope.selected.push(code)
  } else {
    $scope.selected.splice(index, 1)
  }
}

$scope.ArchiveDocs = function() {
  var selectedoptionz = $scope.selection;
  console.log(selectedoptionz);
};

1 个答案:

答案 0 :(得分:0)

我尝试了你的代码并通过在ng-repeat上方的元素上添加控制器来修复问题。警报仅用于检查所选数组中的内容。这是代码,在我的系统上运行正常:

<html>
<head>
</head>
<body ng-app="app">
<table ng-controller="DealerComMaintainCtrl">
    <tbody>
        <tr ng-repeat="item in pagedItems" >
            <td align="center">


                <input type="checkbox" id="{{item.IdArticle}}" ng-value="item.IdArticle" ng-checked="selected.indexOf(item.IdArticle) > -1" ng-click="toggleSelect(item.IdArticle)" />


            </td>
            <td><a href="/Dealercoms/ArticleDownload?FileName={{item.FileName}}&IdArticle={{item.IdArticle}}" class="btn btn-xs btn-total-red btn-label"><i class="ti ti-download"></i></a></td>
            <td>{{item.DateArticle | date:'dd/MM/yyyy'}}</td>
            <td>{{item.Title}}</td>
            <td>{{item.Archive}}</td>

        </tr>

    </tbody>
    </table>


    <!-- jQuery -->
    <script src="./jquery-2.1.4/jquery.min.js"></script>
    <!-- AngularJS -->
    <script src="./angular-1.4.5/angular.min.js"></script>
    <script>
        var app = angular.module("app", []);

        app.controller("DealerComMaintainCtrl", function($scope){
            $scope.pagedItems = [
                {IdArticle: 1, Title: "test1", Archive: "archiv1"},
                {IdArticle: 2, Title: "test2", Archive: "archiv1"},
                {IdArticle: 3, Title: "test3", Archive: "archiv1"},
                {IdArticle: 4, Title: "test4", Archive: "archiv1"}
            ];
            $scope.selected = [];

        $scope.toggleSelect = function toggleSelect(code) {
            var index = $scope.selected.indexOf(code)

            if (index == -1) {
                $scope.selected.push(code)
            }
            else {
                $scope.selected.splice(index, 1)
            }
            alert(JSON.stringify($scope.selected));
        }
        });

    </script>
</body>
</html>

试试吧,我希望它能解决你的问题...