AngularJs - 在数组中推送Object

时间:2017-04-24 03:14:35

标签: angularjs

我无法理解如何将对象推入数组我尝试了几种不同的方法,仍然无法弄明白。

var app = angular.module('myApp',[])
app.controller('dropdown', function($scope, $http){
	$scope.userInfo = [];
	
	$scope.pushInArray = function() {
		$scope.userInfo.push($scope.users)
	}

});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="dropdown">

<input type="text" name="name" ng-model="users.name" placeholder="Name">
<input type="text" name="email" ng-model="users.email" placeholder="Email">
<input type="text" name="phoneNo" ng-model="users.phoneNo" placeholder="phone Number">
<button ng-click="pushInArray()">Add</button>
<pre>{{userInfo}}</pre>
</div>

点击添加按钮我在userInfo中推送用户信息。我第一次工作,但如果我修改了已存储的值也修改了(推送值修改后)。

3 个答案:

答案 0 :(得分:2)

尝试angular.copy,这将使用新实例复制存在的对象。

&#13;
&#13;
var app = angular.module('myApp',[])
app.controller('dropdown', function($scope, $http){
	$scope.userInfo = [];
	
	$scope.pushInArray = function() {
    var user = angular.copy($scope.users);
		$scope.userInfo.push(user);
	}

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="dropdown">

<input type="text" name="name" ng-model="users.name" placeholder="Name">
<input type="text" name="email" ng-model="users.email" placeholder="Email">
<input type="text" name="phoneNo" ng-model="users.phoneNo" placeholder="phone Number">
<button ng-click="pushInArray()">Add</button>
<pre>{{userInfo}}</pre>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

在将其设置为新值之前,您需要清空您的Import-Csv $File | Convertto-Json

users

<强> HTML:

$scope.userInfo = [];

$scope.pushInArray = function(data) {
    $scope.userInfo.push(data)
    $scope.users = null;
}

这是工作Plnkr

答案 2 :(得分:0)

您需要将对象传递给scope函数以保持它。

var app = angular.module('myApp',[])
app.controller('dropdown', function($scope, $http){
    $scope.userInfo = [];

    $scope.pushInArray = function(data) {
        var entry = (JSON.parse(JSON.stringify(data)));
        $scope.userInfo.push(entry);
    }

});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="dropdown">

<input type="text" name="name" ng-model="users.name" placeholder="Name">
<input type="text" name="email" ng-model="users.email" placeholder="Email">
<input type="text" name="phoneNo" ng-model="users.phoneNo" placeholder="phone Number">
<button ng-click="pushInArray(users)">Add</button>
<pre>{{userInfo}}</pre>
</div>