我有这种嵌套状态:
.state("inspectionsBuilder.view", {
url: "/:inspectionId",
templateUrl: "app/inspectionsBuilder/templates/inspectionsBuilder.tmpl.html",
controller: "inspectionsBuilderController",
controllerAs: "builder",
resolve: {
inspectionCurrentIFrame: ["getCurrentIFrameService", inspectionGetCurrentListIFrameResolver]
},
})
以下是从resolve调用的函数:
function inspectionGetCurrentListIFrameResolver(getCurrentIFrameService) {
return getCurrentIFrameService;
}
getCurrentIFrameService - 返回一些DOM元素的工厂服务。
来自inspectionGetCurrentListIFrameResolver函数我想要克隆getCurrentIFrameService服务并返回它。
function inspectionGetCurrentListIFrameResolver(getCurrentIFrameService) {
var elem = null;
var result = angular.copy(getCurrentIFrameService,elem);
return elem;
}
但它不起作用。任何想法我错过了什么?
答案 0 :(得分:1)
根据the manual,
复制源的目标。如果提供,必须是 与来源相同的类型。
当变量引用(elem)传递给函数(angular.copy)时,它不能被重新赋值,这就是变量应该是对象或数组的原因,因此可以添加/删除它的属性。
正确的方法是
var result = angular.copy(getCurrentIFrameService);
或
var elem = {};
var result = angular.copy(getCurrentIFrameService, elem);
答案 1 :(得分:0)
单身人士的服务不是吗?
如果你有一个构造函数/工厂以json球为参数,你可以使用Lodash深度克隆一个任意嵌套的json球,然后传递它来创建任何对象的克隆。
您可以将状态读入对象,并将其传递给构造函数,假设它们属于同一类型,或者可以从另一个派生。