2016-04-05 3 views
0

私はこの表のユーザーから得た現在のデータを置き換える必要があります。しかし、現在のデータを置き換える代わりに、それは私に新しいデータ行を提供します。JavaScriptの現在のデータを置換する際のエラー

$scope.users = [{username: "a", name:"b", status:"0", scope:"1"}]; 

    $scope.addUser = function(user) { 
     $dialog.open({ 
      showClose: false, 
      closeByEscape: true, 
      template: 'views/user/user-user-add.html', 
      controller: ['$scope', function ($dialogScope) { 
       $dialogScope.title = "New User"; 
       $dialogScope.user = { 
        username : "" , 
        name : "", 
        status : "", 
        scope : "", 
        }; 
      if(user){ 
       $dialogScope.title = "Update User"; 
       $dialogScope.user = { 
        username :user.username , 
        name :user.name , 
        status : user.status, 
        scope : user.scope, 
        }; 
        } 

      $dialogScope.add = function() { 
       $scope.users.push($dialogScope.user); 
       $dialogScope.closeThisDialog(); 
       } 
      }], 
     }); 
    }; 
+0

フロントエンドコード、ダイアログ部分を入力できますか? – Nivesh

+0

@Niveshはplunkerのリンクを提供します。 https://plnkr.co/edit/VjUfWIaWxVduXNDT4zfR – sue

+0

ねえ、あなたを取得していません。あなたはaddUserを実行しており、 '$ scope.users.push'は確実にあなたの' users配列 'に新しいユーザを追加します。あなたはどのデータを置き換える必要がありますか?テーブルに表示されているユーザー配列から取得した古いもの。はいの場合、addUserよりもユーザーを更新するように聞こえるようになります。 – Nivesh

答えて

0

問題は、このコードで...

$dialogScope.user = { 
    username: user.username , 
    name: user.name , 
    status: user.status, 
    scope: user.scope, 
}; 

...は、スコープ上userオブジェクトを作成しています。次に、このコード...

$scope.users.push($dialogScope.user); 

...あなたのusersアレイにそのオブジェクトへの参照をプッシュしています。今すぐ後で$dialogScope.userを変更すると、新しいuserを作成する代わりにusers配列にプッシュした参照が変更されます。あなたがすべきことは、この...

$scope.users.push(angular.copy($dialogScope.user)); 

...新しいuserインスタンスを作成し、usersアレイ上にそれをプッシュすることです。次に、ダイアログの値をクリアすることができます。

$dialogScope.user = {}; 
関連する問題