工厂:
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);
};
};
})
我在另一个工厂中使用这个工厂是这样的:
return {
getCurrentPosition: cordovaReady(function (onSuccess, onError, options) {
//
}
}
当 deviceReady 事件被触发时,cordovaReady 工厂将执行传递的回调。我的问题是如何在 Controller 中使用它?
我试过了
.controller( 'HomeCtrl', function HomeController($scope, cordovaReady) {
cordovaReady(function(){
//do stuff
});
});
但是没有用。没有控制台错误。有什么想法吗?
最佳答案
我通过像这样包装因素解决了它
.factory('aUseCase', function ($q, $rootScope, cordovaReady) {
return {
doSomething: cordovaReady(function () {
//do stuff
})
};
})
关于javascript - 如何在 Controller 中使用这个 Angular 工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18055905/