$ cordovaCalendarプラグインを使用してこの問題が発生しました。この$ cordovaCalendarプラグインを使用して、スマートフォンのネイティブカレンダーにイベントを追加することができます。この問題は今、ビューをレンダリングするときに、そのようなイベントEがネイティブ・カレンダーに追加されているかどうかをチェックしたいと考えています。
このコードはオンラインであり、実装しようとしました。それはaddEventで動作しますが、$ q.allは実行されていないため、getEventsでは実行されません。イベントが既に追加されているか、追加されていないかによって、ビューのボタンを依存させるために各約束の結果が必要です。
サービス:
(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(約束)はまったく呼び出されていないようです。しかし、呼び出されても$ .all(...)を呼び出すことはありません。 –