这是我的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""
所有双引号都来自哪里?小时和分钟在选择框中正确显示,因此我假设它将值识别为正确的字符串。
答案 0 :(得分:0)
将代码更改为charlietfl建议使其正常工作:
<select ng-model="timesheet.start" ng-options="(period | date:'H:mm') for period in allowed_times track by period">
</select>