2016-06-24 2 views
1

DB에서 정보를 얻을 수있는 플러그인이 있습니다. 그런 다음 페이지에 정보를 표시합니다. 하지만 페이지가로드 될 때 작동하지 않습니다. 이벤트 처리기에서만 작동합니다.cordova 플러그인이 준비되지 않았습니다.

'deviceready'이벤트에서 내 앱을 부트 스트랩하려고했습니다. 아직도 작동하지 않습니다.

도와주세요! 감사!

index.html 파일 :

<body ng-controller='loginCtl'> {{company}} 
<div class="list list-inset " style="margin-top:20px;"> 
<button class="button button-block button-calm" ng-click="login()">Login</button> 
</div> 
</body> 

app.js 파일 : 덧글에 대한

document.addEventListener('deviceready', onDeviceReady, false); 
function onDeviceReady(){ 
    var body = document.getElementsByTagName("body")[0]; 
    angular.bootstrap(body,['starter']); 
    //company =myplugin.getCompany(); -- doesn't work here 
} 

angular.module('starter', ['ionic','starter.controllers']) 
.run(function($ionicPlatform) { 
//...... 
}); 

angular.module('starter.controllers', []) 
.controller('loginCtl', function($scope) { 
    //$scope.company = myplugin.getCompany(); --- doesn't work at here 
    $scope.login=function(){ 
     company =myplugin.getCompany(); //work at here 
     $scope.company = company; 
    };    
}); 
+0

, 그 다음과 같은 플러그인 꽤 전형적인입니다 페이지 로딩 "이 예상되며, * 오케이, 이제 준비가되었습니다 * 이벤트가 도착하는 데 얼마나 오래 걸릴지 예상 할 수 없습니다. 따라서, * (예를 들어) * 처음에는 많은 정보가 숨겨져있는 페이지를 만들고, 준비 신호를받을 때만 나타낼 수 있습니다. (그리고 그런데 가장 천천히, 가장 오래된, 가장 기억이 잘되는 장비에서 이런 종류의 물건을 시험해보아야한다. 당신은 현지 상점에서 준설 할 수있다. 사용자는 주머니에 넣을 것입니다.) –

+0

@oldbird Cordova.js 파일을 HTML에 포함 시켰습니까? – Gandhi

답변

0

감사합니다. 마지막으로 장치 플러그인을 복사하여이 문제를 해결했습니다. 내 plugin.js가 올바르지 않습니다.

이것은 이벤트 처리기에서만 작동하는 내 원본 코드입니다.

var myplugin = { 
    getCompany:function() { 
     exec(function(info) 
     {company=info.company;}, 
     null, "Myplugin", "getLoginInfo", []); 
     return company; 
    } 
}; 
module.exports = myplugin; 

는 "deviceready"이벤트에서 작동 코르도바 - 플러그인 - 장치에서 복사 : "때 소프트웨어가 준비되지 않을 수 있습니다 불행하게도

channel.createSticky('onCordovaMyReady'); 
// Tell cordova channel to wait on the CordovaInfoReady event 
channel.waitForInitialization('onCordovaMyReady'); 

function Myplugin() { 
    this.company = 'none'; 
    var me = this; 
    channel.onCordovaReady.subscribe(function() { 
     me.getLoginInfo(function(info) { 
       me.company = info.company; 
       channel.onCordovaMyReady.fire(); 
      }, 
      function(e) {            
       utils.alert("[ERROR] Error initializing Cordova: " + e); 
      }); 
    }); 
} 


Myplugin.prototype.getLoginInfo = function(successCallback, errorCallback) { 
      exec(successCallback, errorCallback, "Myplugin", "getLoginInfo", []); 
}; 

module.exports = new Myplugin(); 
}); 
관련 문제