我有一个表单,它使用由多个字段和数组组成的$scope.booking
变量,全部从HTML加载。
我需要从javascript添加一个对象数组,每次添加一个对象。
我试过
$scope.booking.newExternalUsers[$scope.count]= $scope.user.newExternalUser;
和
$scope.booking.newExternalUsers.push=$scope.user.newExternalUser;
但我收到了Cannot set property '0' of undefined
和Cannot set property of undefined
,这是正确的,因为我只实例化了$scope.booking={}
也许是一个愚蠢的问题,但我几乎是新的angularjs,我怎么能添加$scope.user.newExternalUser
一个pertime(对于每个按钮事件)?
感谢
答案 0 :(得分:2)
您应该先设置数组,然后再为其设置值。
像这样:
$scope.booking = {};
$scope.booking.newExternalUsers = [];

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

,然后强>
您可以根据需要添加项目,如下所示:
$scope.booking.newExternalUsers[$scope.count]= $scope.user.newExternalUser;
$scope.booking.newExternalUsers.push($scope.user.newExternalUser);
答案 1 :(得分:1)
首先在newExternalUsers
数组中首先定义属性booking
$scope.booking={
'newExternalUsers' : []
}
或
$scope.booking.newExternalUsers=[]
然后将项目推送到booking
数组
$scope.booking.newExternalUsers.push($scope.user.newExternalUser);
答案 2 :(得分:0)
您必须实例化$scope.booking.newExternalUsers=[]
答案 3 :(得分:0)
我假设你有一个控制器。在那个控制器中你可以拥有:
$onInit() {
this.booking = { newExternaUsers: [] };
}
然后在控制器启动时启动一次。