我有以下工廠。它還有一個返回允許時間數組的函數(根據調用返回的信息計算)。我想在模板中提供此信息,如何在控制器中執行此操作?所有承諾迷茫
.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是的,這是關於promise的最酷的事情之一,它允許一個'then'塊修改或返回完全新的承諾,交給下一個處理程序。 – dfsq
謝謝!這麼簡單,但這讓我搜索了一個多小時。我也贊同帕特里克的回答,這實際上是一樣的。 – rept