Angular,如何停止对服务对象的跟踪
angular, how to stop tracking on service objects
我有一个服务,我存储所有的dto类,并映射回api调用。当我使用这些服务对象时,它们会一直跟踪到服务,所以如果我想进行另一个事务,我就不能更新它们。
服务来了
(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)
This is How I use it
var userDto = dtoObjects.userDto;
popUpService.raisePopUp(addEditTplt, addEditCtrl, userDto, reloadTable);
console.log(dtoObjects.userDto)
;
我赋给该对象的所有内容现在都映射回service。angular有可能停止使用这款深度手表吗?
谢谢!
您可以将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);
一般来说,Angular的部分强大之处在于服务都是单例的,因此单个引用可以绑定到应用中的任何地方。在Angular中使用dto往往会增加大量不必要的复杂性,因为Angular不应该关心服务器上的事务状态。
然而,如果你绝对需要这个功能,你可以使用angular.copy()
来复制你的DTO,以便在你的视图中使用。
//example with 1 argument
var userDto = angular.copy(dtoObjects.userDto);
//example update, using two arguments
angular.copy(userDto, dtoObjects.userDto);
相关文章:
- 代码挑战:创建一个跟踪对象实例总数的类Foo
- Angular.js通过对象关键点上的ng选项进行跟踪
- javascript中的对象检测和跟踪
- IE8错误:为null或不是对象,但仍然可以跟踪/控制台注销
- 用于跟踪购物车可用性的Javascript数组/对象/哈希表
- 在JavaScript中,对象如何跟踪键/值的插入顺序
- 使用JQuery库跟踪丢弃的对象
- JayData 不会跟踪自定义对象上的更改
- 有没有一种方法可以从Internet Explorer中的Error对象中获取行号或堆栈跟踪
- 跟踪对象的深度
- Javascript:跟踪函数父对象层次结构,以便从窗口上下文调用它
- AngularJS 1.4 migration - ngOptions:通过破损的对象相等性检查进行跟踪
- 在gamequery中,我试图通过点击鼠标跟踪器来移动选定的对象,并拖动它
- Angular,如何停止对服务对象的跟踪
- 在原型设计时跟踪javascript对象引用的最佳方法是什么?
- 在可观察数组中推入具有可观察属性的对象仍然跟踪对象的属性
- 单击事件对象跟踪问题
- JavaScript:使用一个对象在数组上迭代并跟踪项目频率
- 跟踪javascript对象在递归过程中何时升级
- Javascript:跟踪使用 eval() 创建的对象