2016-10-15 10 views
0

私はすべての私のDTOクラスを保存するサービスを持っています。 私はこれらのサービスオブジェクトを使用するとき、彼らはサービスにすべての方法を追跡しているので、私は別のトランザクションを作りたい場合、私はそれらを更新できません。ここサービスオブジェクトのトラッキングを停止する方法

ここでサービス

(function() { 
    "use strict"; 

    var app = angular.module("app.bms"); 

    app.service("dtoObjects", function() { 

     var state = { 
      Id: "", 
      Value: "" 
     } 

     var companyDto = { 
      Id: "", 
      Name: "", 
      Address: "", 
      Address2: "", 
      City: "", 
      State: state, 
      Zip: "", 
      Phone: "", 
      contactName: "" 
     } 

     var departmentDto = { 
      DepartmentID: "", 
      DepartmentName: "", 
      CompanyDto: companyDto, 
      IsActive: false, 
      States: [state] 
     } 

     var userDto = { 
      UserId: "", 
      FistName: "", 
      LastName: "", 
      Email: "", 
      Phone: "", 
      LoginName: "", 
      Password: "", 
      IsActive: "", 
      Client: companyDto, 
      Department: departmentDto 
     } 

     return { 
      departmentDto: departmentDto, 
      companyDto: companyDto, 
      userDto: userDto 
     } 

    }); 
})(); 

は、私はそれを注入する方法です。

function userInfoController($scope, userService, dtoObjects, ngTableParams, popUpService, modalService) 

これは私が

var userDto = dtoObjects.userDto; 
      popUpService.raisePopUp(addEditTplt, addEditCtrl, userDto, reloadTable); 

      console.log(dtoObjects.userDto) 

それを使用する方法です。

私はそのオブジェクトに割り当てられたものすべてをサービスに戻してマッピングしました。 この深い腕時計を停止することは可能ですか?

ありがとうございました!

+0

DTOにコンストラクタ関数を返し、新しいトランザクションが必要なときはいつでも 'new'することは可能ですか? –

答えて

1

関数でDTOサービスをラップし、リセットする必要があるたびにnewを使用して新しいコピーをインスタンス化することができます。だから、あなたのサービスは、次のようになります。

(function() { 
"use strict"; 
var app = angular.module("app.bms"); 
app.service("dtoObjects", function() { 
    function dto() { 
     return { 
      companyDto: companyDto 
      //... 
     } 
     var companyDto = { 
      //... 
     } 
    } 
    return dto; 
});})(); 

をそして、あなたがそうのようにそれを使用することになり、その後:一般的に

var newDTO = new dtoObjects(); 
console.log(newDTO.companyDTO); 
1

、角度の電力の一部は、サービスがシングルトンであるという事実であるため、アプリ内のどこにでも1つの参照をバインドすることができます。 AngularではDTOを使用すると、サーバー上のトランザクション状態を気にする必要がないため、不必要な複雑さを大量に追加する傾向があります。

ただし、この機能が絶対に必要な場合は、angular.copy()を使用して、自分のビューに使用するDTOのコピーを作成できます。

//example with 1 argument 
var userDto = angular.copy(dtoObjects.userDto); 

//example update, using two arguments 
angular.copy(userDto, dtoObjects.userDto); 
+0

ありがとう、私は完全にコピーを忘れてしまった。 私はかなり複雑なモデルとiを持っているので、これをやっているのは、混乱を避けるためにこれらを同期させておくことだからです。 – kkdeveloper7

関連する問題