4

工場:

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) {
        //
    }
}

cordovaReady ファクトリは、deviceReady イベントが発生したときに、渡されたコールバックを実行します。私の質問は、コントローラーでどのように使用するのですか?

私はちょうどで試しました

.controller( 'HomeCtrl', function HomeController($scope, cordovaReady) {   
  cordovaReady(function(){
        //do stuff
  });   
}); 

しかし、うまくいきませんでした。コンソール エラーはありません。何か案は?

4

4 に答える 4

0

依存関係がコントローラーに注入されていますか?

var MyController = function($scope, cordovaReady) {
  ...
}
MyController.$inject = ['$scope', 'cordovaReady'];
于 2013-08-05T10:46:42.677 に答える
0

コントローラーでは、cordovaReady を使用する関数を宣言する必要があります

myApp.controller("salaryCalculatorCtr", ['$scope', 'cordovaReady'
, function ($scope, cordovaReady) {

    var initApp= cordovaReady(function () {

       //do something
    });
    initApp();
}]);
于 2015-04-11T13:33:14.410 に答える