2015-09-05 106 views
0

我有這樣的嵌套狀態:已經從解決所謂如何在角度上克隆對象?

.state("inspectionsBuilder.view", { 
        url: "/:inspectionId", 
        templateUrl: "app/inspectionsBuilder/templates/inspectionsBuilder.tmpl.html", 
        controller: "inspectionsBuilderController", 
        controllerAs: "builder", 
        resolve: { 
         inspectionCurrentIFrame: ["getCurrentIFrameService", inspectionGetCurrentListIFrameResolver] 
        }, 
       }) 

這裏是功能:

function inspectionGetCurrentListIFrameResolver(getCurrentIFrameService) { 
    return getCurrentIFrameService; 

} 

getCurrentIFrameService - 是廠家售後服務返回一些DOM元素。

從inspectionGetCurrentListIFrameResolver函數我想克隆getCurrentIFrameService服務並返回它。

function inspectionGetCurrentListIFrameResolver(getCurrentIFrameService) { 
    var elem = null; 
    var result = angular.copy(getCurrentIFrameService,elem); 
    return elem; 
} 

但它不工作。任何想法我失蹤?

回答

0

服務不是Singleton嗎?

如果你有一個構造函數/工廠將一個json球作爲參數,你可以使用Lodash來深度克隆一個任意嵌套的json球,然後通過它來創建任何對象的克隆。

您可以將狀態讀入對象,並將其傳遞給構造函數,假設它們是相同類型的,或者可以從另一個派生。

+0

任何例子將是有益的? – Michael

1

根據the manual

目的地到其中的源被複制。如果提供,必須是與源相同的 。

當可變參考(ELEM)被傳遞給函數(angular.copy),它不能被重新分配,這就是爲什麼變量應該是一個對象或一個數組,所以其性能可被添加/移除。

正確的方法做,這是

var result = angular.copy(getCurrentIFrameService); 

var elem = {}; 
var result = angular.copy(getCurrentIFrameService, elem); 
+0

我試過了但它沒有幫我\ – Michael

+1

然後問題出在被克隆的對象上。您尚未提供getCurrentIFrameService的代碼。但是如果確實'返回某個DOM元素',這肯定會成爲問題,'angular.copy'不應該用來克隆DOM。 – estus

+0

我應該使用什麼? – Michael