jeudi 1 janvier 2015

Angular and PhoneGap Event Queuing


I have this:



app.factory('contacts', function ($rootScope, $q, cordovaReady) {
return {
find: cordovaReady(function (filter) {
var deferred = $q.defer();

var options = new ContactFindOptions();
options.filter = filter;
options.multiple = true;
var fields = ["displayName", "name", "addresses", "emails"];
navigator.contacts.find(fields, function (contacts) {
$rootScope.$apply(function () {
deferred.resolve(contacts);
});

}, function (error) {
$rootScope.$apply(function () {
deferred.reject(error);
});
}, options);

return deferred.promise;
})
};


and



app.factory('cordovaReady', function () {
return function (fn) {

var queue = [];

var impl = function () {
queue.push(Array.prototype.slice.call(arguments));
};

document.addEventListener('deviceready', function () {
queue.forEach(function (args) {
fn.apply(this, args);
});
impl = fn;
}, false);

return function () {
return impl.apply(this, arguments);
};
};
});


Whenever I call from the controller:



var contactSearch = '';
contacts.find(contactSearch).then(function (contacts) {
$scope.contacts = contacts;
}, function (error) {
console.log(error);
});


I get:



ReferenceError: ContactFindOptions is not defined
at Object.<anonymous>


I made sure to wrap the function with cordovaReady. Why is this happening?





Aucun commentaire:

Enregistrer un commentaire