2017-03-11 8 views
1

私は角度の材料md-dialogを使用しています。ユーザがボタン(編集ボタン)をクリックしてダイアログを表示し、現在のオブジェクト(テーブルの行)を受け取り、それをshowDialog関数に渡すと、双方向バインディングを無効にしますか?

<button ng-class="showDialog(task)">Open dialog</button> 

にShowDialog機能:

$scope.showDialog = function (task) { 
    $scope.taskToEdit = task; 
    $mdDialog.show({ 
     controller: DialogController, 
     contentElement: '#taskEdit', 
     parent: angular.element(document.body), 
     clickOutsideToClose: true 
    }); 
}; 

しかし、私はダイアログで値を編集するたびに、テーブルは、同じキーストロークを取得しているテーブルにバックで結合ライブがあるその値を持ちます値をダイアログとして表示し、外にクリックした場合(編集をキャンセル)、これらの値存続し続ける。 この2通りのバインディングを無効にして、オブジェクトのコピーを参照ではなくshowDialog関数に渡す方法はありますか?

+0

オブジェクトのコピーを渡す方法はありますか?はいあります。コピーを作成し、それをshowDialog関数に渡します。あなたはオブジェクトのコピーを作る方法を尋ねていますか?オブジェクトはどのように見えますか?何を試しましたか? –

+0

こんにちは、モハメド、私はまだここであなたの応答を待っています:http://stackoverflow.com/questions/42717303/ng-show-display-the-contents-before-the-page-finished-loading/42717354#42717354 – lin

答えて

3

この場合、angular.copy()を実行する必要があります。そここれまでのアプローチの多くがありますが、あなたは、単純なソリューションを使用する必要があります - angular.copy()はそれをこの時間を行うべき理由thatsの - してみてください:

$scope.taskToEdit = angular.copy(task); 

これはAngularJSに結合E2Eは無効になりませんが、それは$scopeを更新しなくなりますあなたのメインビューで。

関連する問題