【问题标题】:Add object to variable defined for form将对象添加到为表单定义的变量
【发布时间】:2017-06-23 13:43:59
【问题描述】:

我有一个使用$scope.booking 变量的表单,该变量由几个字段和数组组成,全部从HTML 加载。 我需要从 javascript 添加一组对象,每次添加一个对象。 我试过了

$scope.booking.newExternalUsers[$scope.count]= $scope.user.newExternalUser;

$scope.booking.newExternalUsers.push=$scope.user.newExternalUser;

但我收到Cannot set property '0' of undefinedCannot set property of undefined,这是正确的,因为我只实例化了$scope.booking={} 也许是一个愚蠢的问题,但我几乎是 angularjs 的新手,我怎样才能添加 $scope.user.newExternalUser 一次(对于每个按钮事件)? 谢谢

【问题讨论】:

    标签: javascript angularjs arrays object


    【解决方案1】:

    您应该先定义数组,然后再为其设置值。

    像这样:

    $scope.booking = {};
    
    $scope.booking.newExternalUsers = [];

    $scope.booking = {
        newExternalUsers: []
    };

    那么

    您可以根据需要向其中添加项目,如下所示:

    $scope.booking.newExternalUsers[$scope.count]= $scope.user.newExternalUser;

    或使用Array.prototype.push()

    $scope.booking.newExternalUsers.push($scope.user.newExternalUser);

    【讨论】:

      【解决方案2】:

      先在booking数组中先定义属性newExternalUsers

      $scope.booking={
        'newExternalUsers' : []
      }
      

      $scope.booking.newExternalUsers=[]
      

      然后将项目推送到booking数组

      $scope.booking.newExternalUsers.push($scope.user.newExternalUser);
      

      【讨论】:

        【解决方案3】:

        你必须实例化$scope.booking.newExternalUsers=[]

        【讨论】:

        • 它创建了一个不同的对象
        • @luca 您必须先将newExternalUsers 定义为数组,然后才能使用它。 undefined 错误是因为您的 $scope.booking 对象没有定义 newExternalUsers 属性。
        【解决方案4】:

        我假设你有一个控制器。在那个控制器中,你可以有这个:

        $onInit() {
          this.booking = { newExternaUsers: [] };
        }
        

        然后在控制器启动时启动一次。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-26
          • 1970-01-01
          • 1970-01-01
          • 2015-08-28
          • 2010-11-09
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          相关资源
          最近更新 更多