我有以下工厂,我在其中使用新属性扩展了Timesheet:start。但是我不知道怎么做不正确,因为_start似乎处于错误的水平。所有时间表条目都返回相同的开始。
如何将其放入时间表?
.factory('Timesheets', function($resource, LinkData) {
var Timesheet = $resource('http://127.0.0.1:3000/api/v1/timesheets/:id',{id:'@id'}, {update:{method:'PUT'}});
var _start;
Object.defineProperty(Timesheet.prototype, 'start', {
get: function() {
if (_start == undefined){
_start = moment(this.time_start).format();
}
return _start;
},
set: function(value) {
if (moment(value).isValid()) {
this.time_start = value;
_start = value;
}
}
});
答案 0 :(得分:1)
角度服务设计为单身,因此总有一个_start
。
你想要的可能是将_start
放在Timesheet
对象中。
module.factory('Timesheets', function($resource, LinkData) {
var Timesheet = $resource('http://127.0.0.1:3000/api/v1/timesheets/:id',{id:'@id'}, {update:{method:'PUT'}});
return {
getTimesheetObj: getTimesheetObj
}
function getTimesheetObj() {
var timesheet = new Timesheet();
timesheet._start = undefined;
Object.defineProperty(timesheet, 'start', {
get: function() {
if (this._start === undefined){
this._start = moment(this.time_start).format();
}
return this._start;
},
set: function(value) {
if (moment(value).isValid()) {
this.time_start = value;
this._start = value;
}
};
return timesheet;
}
});