0
執行我使用$ cordovaCalendar插件這個問題。我可以用這$ cordovaCalendar插件成功事件添加到我的智能手機的內建日曆,和它的作品對我來說,是的!現在的問題,我想,渲染視圖時,要檢查這種事件E已被添加到本地日曆。
我發現這個代碼在網上,並試圖實現它。它適用於addEvent,但在getEvents中它並不是因爲$ q.all沒有執行,而且我需要每個promise的結果才能使視圖中的按鈕取決於該事件是已添加還是未添加。
下面是代碼:
服務:
(function() {
'use strict';
angular
.module('app.services')
.factory('Events', EventsFunction);
function EventsFunction($q, $cordovaCalendar) {
var incrementDate = function(date, amount) {
var tmpDate = new Date(date);
tmpDate.setDate(tmpDate.getDate() + amount);
tmpDate.setHours(13);
tmpDate.setMinutes(0);
tmpDate.setSeconds(0);
tmpDate.setMilliseconds(0);
return tmpDate;
};
var incrementHour = function(date, amount) {
var tmpDate = new Date(date);
tmpDate.setHours(tmpDate.getHours() + amount);
return tmpDate;
};
var getEvents = function(events) {
var deferred = $q.defer();
var promises = [];
events.forEach(function(event) {
promises.push($cordovaCalendar.findEvent({
title: event.title,
startDate: event.start_time
}));
});
$q.all([promises]).then(function(results) {
for (var i = 0; i < results.length; i++) {
events[i].status = results[i].length === 1;
console.log(events[i]);
}
deferred.resolve(events);
});
return deferred.promise;
};
var addEvent = function(event) {
console.log(event);
var deferred = $q.defer();
$cordovaCalendar.createEvent({
title: event.title,
notes: event.ent_name,
startDate: event.start_time,
endDate: event.start_time
}).then(function(result) {
console.log('success');
console.dir(result);
deferred.resolve(1);
}, function(err) {
console.log('error');
console.dir(err);
deferred.resolve(0);
});
return deferred.promise;
};
return {
get: getEvents,
add: addEvent
};
}
})();
控制器:
{
$http({
method: 'GET',
skipAuthorization: true, //es necesario enviar el token url: '', headers: ... })
.success(function (data) {
$scope.posts = data.message;
Events.get($scope.posts).then(function(events) {
console.log("events", events);
$scope.events = events;
});
console.log($scope.events);
});
$scope.addEventToCalendar = function(event) {
//console.log("In event add");
//Events.add(event);
}
}
HTML:
<button class="button button-clear button-small button-royal button-block" ng-if="!post.status" ng-click="addEventToCalendar(post)"><b>Add to Calendar</b></button>
<p ng-if="post.status">This event is added to your calendar already!</p>
我試過這個,它沒有成功。我嘗試了很多東西,但似乎並沒有調用$ q.all(promises)。但即使它被調用,它也不會調用$ .all(...)。 –