2016-02-05 49 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