我是AngularJS的初学者,感谢Stackoverflow上的Angular社区愿意为像我这样的新手提供帮助,为此我学习得很好,非常感谢。

今天,我想在昨天进行的练习中添加一个功能(可以在here中找到)。我想记录用户键入的数字对,并将其显示为行列表。为此,我引入了一个数字对象数组。按下按钮会将当前对添加到阵列。

当前,似乎数组只包含成员,无论我执行什么操作来将新成员推入该数组。谁能帮我找到我的错误?



var saApp = angular.module("saApp", []);

saApp.controller('numberController', function($scope) {
  $scope.numbers = [];

  $scope.number = {
    number1: 0,
    number2: 0,
    sumIt: function() {
      var numberObject;
      numberObject = $scope.number;
      return parseInt(numberObject.number1) + parseInt(numberObject.number2);
    }
  };

  $scope.pushIt = function() {
    if ($scope.number !== undefined)
      $scope.numbers.push($scope.number);
  }
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="saApp" ng-controller="numberController">
  <input type="text" ng-model="number.number1" placeholder="Enter a number here">

  <input type="text" ng-model="number.number2" placeholder="Enter another number here">

  <br />{{number.number1}} + {{number.number2}} = {{number.sumIt()}}

  <br />

  <br />
  <button ng-click="pushIt()">Push</button>

  <div ng-repeat="number in numbers">
    {{number.number1}} + {{number.number2}} = {{number.sumIt()}}

    <br />
  </div>

</div>

最佳答案

当前代码中的一项更改只是克隆$scope.number,然后再推送到$scope.numbers数组中。

 $scope. pushIt = function() {
            if ($scope.number !== undefined)
                $scope.numbers.push(angular.copy($scope.number));
        }


为什么我们应该在推动之前克隆。

$ scope.number对象始终是相同的,因此数组中的所有元素都将具有相同的$$ hashkey,您将获得此error

因此,您应该在推送之前克隆或复制对象,以便数组中具有新的元素对象。

工作代码here

关于javascript - Angular作用域变量中的数组只有一个成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35643259/

10-11 22:06
查看更多