2015-09-05 58 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