javascript - 如何在 Controller 中使用这个 Angular 工厂?

标签 javascript angularjs

工厂:

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/

相关文章:

javascript - 如何发送json格式到服务器

javascript - 如何制作一个自动单击具有特定 rel 属性的 anchor 标记的按钮?

javascript - 带滑动荧光笔的 jQuery 菜单

javascript - 如何设置 highcharts 中的 y 轴值

javascript - 在另一个服务调用中使用一个服务调用的结果(Angular)

angularjs - 为什么使用终端 : true instead of removing lower priority directives?

angularjs - 为什么这个 Angular ui 路由器代码会导致 $digest 中的无限循环?

javascript - 奇怪的 JavaScript 正则表达式行为

Javascript - 我从字符串创建了一个 blob,如何取回该字符串?

javascript - 在 Angular 1.4 中,在 Controller 内,我可以插入 "events"在 $http 请求之前和成功/错误之后执行吗?