У меня есть следующая фабрика. Он также имеет функцию, которая возвращает массив допустимых времен (вычисление на основе информации, возвращаемой вызовом). Я хочу сделать эту информацию доступной в шаблоне, как это сделать в контроллере?Смущенный всеми обещаниями
.factory('Company', function($resource) {
var myCompany = $resource('http://127.0.0.1:3000/api/v1/companies').get();
return {
allowed_times: function(){
myCompany.$promise.then(function(data, status){
var list = new Array();
list[list.length] = moment().set('hour', data.settings.work_time_start).set('minute', 0).set('second', 0);
endTime = moment().set('hour', data.settings.work_time_end).set('minute', 0).set('second', 0);
var currentTime = moment().set('hour', data.settings.work_time_start).set('minute', 0).set('second', 0);
while (list[list.length - 1] < endTime)
{
list[list.length] = moment(list[list.length - 1]).add(data.settings.time_rounding, 'm');
};
return list;
})
}
}
})
Я уже пробовал разные подходы, это последнее, но выдает сообщение об ошибке (Не удается прочитать свойство «затем» неопределенных).
Company.allowed_times().then(function(data) {
$scope.allowed_times = data
})
Это очень здорово, не было известно о «* станет новым обещанием, переданным другому, а затем вызовом * ". –
@MarcelGwerder Yep, это одна из самых крутых вещей о обещаниях, которая позволяет одному блоку 'then' изменять или возвращать совершенно новое обещание, которое будет передано следующему обработчику. – dfsq
Спасибо! Так просто, но это застало меня больше часа. Я также поддержал ответ Патрика, который был практически таким же. – rept