双重双引号来自何处?

时间:2014-12-30 00:10:07

标签: angularjs

这是我的allowed_times:

[Tue Dec 30 2014 06:00:00 GMT + 0100(CET),Tue Dec 30 2014 06:15:00 GMT + 0100(CET),Tue Dec 30 2014 06:30:00 GMT + 0100(CET ),Tue Dec 30 2014 06:45:00 GMT + 0100(CET),Tue Dec 30 2014 07:00:00 GMT + 0100(CET),Tue Dec 30 2014 07:15:00 GMT + 0100(CET), Tue Dec 30 2014 07:30:00 GMT + 0100(CET),Tue Dec 30 2014 07:45:00 GMT + 0100(CET),Tue Dec 30 2014 08:00:00 GMT + 0100(CET),Tue Dec 30 2014 08:15:00 GMT + 0100(CET),Tue Dec 30 2014 08:30:00 GMT + 0100(CET),Tue Dec 30 2014 08:45:00 GMT + 0100(CET),Tue Dec 30 2014 09:00:00 GMT + 0100(CET),Tue Dec 30 2014 09:15:00 GMT + 0100(CET),Tue Dec 30 2014 09:30:00 GMT + 0100(CET),Tue Dec 30 2014 09: 45:00 GMT + 0100(CET),Tue Dec 30 2014 10:00:00 GMT + 0100(CET),Tue Dec 30 2014 10:15:00 GMT + 0100(CET)]

我的模板中有这个:

<select ng-model="timesheet.start">
  <option ng-repeat="period in allowed_times" value={{period}}>{{ period | date:'H:mm' }}</option>
</select>

这是在服务中设置的:

  Object.defineProperty(Timesheet.prototype, 'start', {
    get: function() {
      if (_start == undefined){
        _start = new Date(moment(this.time_start));
      }
      return _start;
    },
    set: function(value) {
      if (moment(value).isValid()) {
        _start = moment(moment(_currentDate) + moment.duration(value));
        this.time_start = _start;
      }
    }
  });

我在setter函数的第一行设置了一个断点。当我改变select中的值时,我看到了这个值:

""2014-12-30T07:30:00.889Z""

所有双引号都来自哪里?小时和分钟在选择框中正确显示,因此我假设它将值识别为正确的字符串。

1 个答案:

答案 0 :(得分:0)

将代码更改为charlietfl建议使其正常工作:

      <select ng-model="timesheet.start" ng-options="(period | date:'H:mm') for period in allowed_times track by period">
      </select>