2015-01-01 4 views
0

У меня есть следующий завод, на котором я расширил расписание с новым свойством: start. Однако я как-то не делаю этого правильно, потому что _start, похоже, находится на неправильном уровне. Все записи в Timesheet возвращаются к такому же началу.Расширить использование defineProperty, где поставить приватную переменную?

Как я могу поместить его в расписание?

.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

что возвращается на завод? поскольку сервис является singleton, вам, вероятно, нужно поставить '_start' в объект' Timesheet' – elaijuh

ответ

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; 
    } 

}); 
+0

Отлично! Действительно, добавив эту проблему, эта «проблема» :-) – rept

+0

круто, не могли бы вы также повысить ее, спасибо. – elaijuh

Смежные вопросы