2016-02-05 41 views
0

我知道如何通过angular.copy(object)复制对象。但问题是它不会复制空值。有什么方法可以复制它吗?在AngularJS中复制空值

现在说我有当编辑的任何字段应该更新对象回在我反映填充对象表行的形式。

我捕捉填入值user对象。 Yah ng-model分别为user.name,user.phone等。在点击更新按钮时,我只是在做 $scope.formElements[index] = angular.copy(user);

现在,当我们在单独的函数中添加记录时,formElements数组就形成了。

所以Angular的默认行为是它没有为空值定义键。所以复制后我的数组被移到左边,只显示填满的值。

复制用户对象时,有什么方法可以复制已填充的空白值?

完整的代码可以在Update form after editing any field value AngularJs

+0

如果你这样做,而不是:'angular.copy(用户,$ scope.formElements [指数]);'? –

+0

这对我不起作用。仍然是同样的事情 – kushalvm

回答

0

如果我正确地理解你的问题,你可以做类似这样的

$scope.formElements = []; 

     $scope.update = function() {    
      $scope.formElements.push($scope.user);   
     } 

HTML:

<input type="text" placeholder="user" ng-model="user.name"> 
      <input type="text" placeholder="phone" ng-model="user.phone"> 
      <input type="submit" ng-click="update()"> 

注:

这也将创建空白值的关键。但问题是,对于第一个元素,如果用户对象值为空,它将会给出未定义的元素。

如果你通过角不会知道它需要创建什么键空值,这是预期的行为,因为是首次。

如果您处理非常第一个方案,然后休息将工作。

要处理定义你的模型对象内部控制

$scope.user = { 
    name: '', 
    phone: '' 
} 
0

其更好地定义你的user model像这样在你的controller

$scope.user = { 
    name: '', 
    phone: '' 
} 

无需额外复制

1

Instate的复制你可以使用angular.toJson和JSON.parse方法来复制“用户”json。

所以它会看起来像这样。

$scope.formElements[index] = angular.toJson(user); 
$scope.formElements[index] = JSON.parse($scope.formElements[index]); 

这一定会帮助

+0

说我有6个值,我留下2空。表格数据显示空白标题下的空白值。期望的行为。酷!我们通过点击编辑按钮来编辑表单。然后,相同的表单会被预填充值弹出。然后如果我编辑任何字段并点击更新按钮。前面显示的值为空将被忽略,并且在电子邮件的表格标题下显示其他内容。 这toJson不幸的工作方式与复制 – kushalvm

+0

可以请你添加js小提琴或plunker,以便我可以得到它,然后我可以为您提供一个解决方案。 – Rahul

+0

我找到了更新的解决方案。基本上我坚持在更新时手动构建新对象,然后将其分配给formElements [index]。谢谢 – kushalvm