2015-03-25 10 views
8

के साथ MovilizerJS का उपयोग करना मैं एक HTML5 स्क्रीन बनाने के लिए Ionic फ्रेमवर्क के साथ MovilizerJS का उपयोग करने की कोशिश कर रहा हूं। मैं आईओनिक द्वारा उत्पन्न App.js फ़ाइलों के भीतर te MovilizerJS को संदर्भित करने का प्रयास करता हूं। मैंने प्लगइन्स फ़ोल्डर में MovilizerJS फ़ाइलों को जोड़ा और Cordova.js फ़ाइल को जोड़ा।मूवीलाइज़र - Ionic

var oHead = document.getElementsByTagName('HEAD').item(0); 
var oScript = document.createElement("script"); 
oScript.type = "text/javascript"; 
oScript.src = "plugins/Movilizer.js"; 
oHead.appendChild(oScript); 

ऐसा लगता है कि हालांकि जब मैं एक ब्राउज़र (या movelet में एचटीएमएल 5 दृश्य) के अंदर एचटीएमएल 5 पृष्ठ लोड MovilizerJS लोड प्राप्त करता है। ब्राउज़र पर निम्न त्रुटि प्रकट होती है:

मॉड्यूल 'movilizer' उपलब्ध नहीं है!

शायद मुझे इसे कोणीय फ्रेमवर्क में मॉड्यूल के रूप में जोड़ने की आवश्यकता है, लेकिन जब मैं इसे मॉड्यूल में जोड़ने की कोशिश करता हूं तो यह मुझे अभी भी त्रुटियां देता है। मेरे HTML फ़ाइलों movilizer के लिए स्क्रिप्ट टैग है:

<script src="plugins/Movilizer.js"></script> 

मेरे App.js कोड वर्तमान में इस तरह दिखता है:

angular.module('starter', ['ionic']) 
.run(function($ionicPlatform) { 
     $ionicPlatform.ready(function() { 
     // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard 
     // for form inputs) 
     if(window.cordova && window.cordova.plugins.Keyboard) { 
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
     } 
     if(window.StatusBar) { 
      StatusBar.styleDefault(); 
     } 

     }); 
    }).factory('MovilizerExtender', function ($rootScope) { 
     return { 
     startUpMovilizer: function(){ 
      movilizer.readGlobalVariable("testTable",this.successCallback,this.errorCallback); 
     }, 
     successCallback: function(result){ 
      $rootScope.routestops = [ 
      { ontvNaam: 'nice' }, 
      { ontvNaam: 'it' }, 
      { ontvNaam: 'is' }, 
      { ontvNaam: 'working' } 
      ]; 
     }, 
     errorCallback: function(){ 
      console.log('failed'); 
     } 
     } 
    }).controller("RoutestopCtrl", function($scope, $rootScope, MovilizerExtender) { 
     MovilizerExtender.startUpMovilizer(); 
     $scope.routestops = $rootScope.routestops; 

     $rootScope.$watch('routestops', function(){ 
      $scope.routestops = $rootScope.routestops; 
     }); 
    }); 

जब मैं सीधे succesCallback विधि कॉल और टिप्पणी पंक्ति: movilizer। readGlobalVariable (...), यह अब movilizerJS तक पहुंचने का प्रयास नहीं करता है और पेज काम करता है। यह भी ध्यान रखें कि Movilizer.js फ़ाइल में app.js कोड में वर्णित readGlobalVariable विधि शामिल है। किसी भी मदद या विचारों की सराहना की जाएगी। इसके अलावा

window.onpageshow = ready; 
function ready() 
{ 
    var deviceready = new Event("deviceready"); 
    document.dispatchEvent(deviceready); 
    angular.bootstrap(document, ['starter'], {strictDi: true}); 
} 

, movilizer के लिए इंतजार करना एक वादा का उपयोग करें::

+2

आप तक पहुँचने से पहले प्रोटोटाइप Movilizer का एक उदाहरण movilizer बनाया था readGlobalVariable समारोह? त्रुटि संदेश लगता है जैसे संदर्भ में रनटाइम के दौरान कोई उदाहरण मौजूद नहीं है। ब्राउज़र में डिबगिंग के लिए यह Movilizer.js में मौजूद होना चाहिए यदि मुझे –

+2

गलत नहीं है, तो मैं हाल ही में अपने HTML पृष्ठ में स्क्रिप्ट ऑर्डर संपादित करके समस्या को हल करने में सक्षम था, cordova.js को मेरे आयनिक ढांचे से पहले लोड किया जाना आवश्यक था अन्यथा यह movilizer.js को पहचान नहीं पाएगा क्योंकि इसे अभी तक तत्काल नहीं किया गया था। मुझे अपने डेस्कटॉप ब्राउज़र (क्रोम, फ़ायरफ़ॉक्स और यहां तक ​​कि आईई) पर काम करने वाले movilizerjs मिलते हैं, हालांकि दुर्भाग्य से यह अभी भी movilizer क्लाइंट के भीतर काम नहीं कर रहा है। स्विंग डीबगिंग क्लाइंट का उपयोग करना सभी चर ठीक लगता है, इसलिए मुझे लगता है कि यह HTML5 स्क्रीन में एक आंतरिक बग है। हालांकि स्विंग डीबग क्लाइंट में HTML5 त्रुटियां लॉग नहीं हैं, इसलिए मुझे यकीन नहीं है कि –

+0

@VictorBeersma मेरे पास एक ही समस्या थी और आपकी टिप्पणी ने मेरा दिन बचाया। कृपया इसे एक उत्तर के रूप में जोड़ने और इसे स्वीकार करने पर विचार करें। एक अच्छा दिन सर है। –

उत्तर

0

कोशिश के बजाय ng-app का उपयोग कर के अपने अनुप्रयोग bootstrap करने के लिए

.factory('MovilizerExtender', function ($q, $rootScope) { 
    return { 
     startUpMovilizer: function(){ 
     var self = this; 
     var defer = $q.defer(); 

     rootScope.$watch(function(value) { 
      return movilizer && movilizer.readGlobalVariable; 
     }, function(ready) { 
      if(ready) { 
      movilizer.readGlobalVariable("testTable",self.successCallback,self.errorCallback); 
      } 
      defer.resolve(ready); 
     }); 
     return defer.promise; 
     }, 
     successCallback: function(result){ 
     $rootScope.routestops = [ 
      { ontvNaam: 'nice' }, 
      { ontvNaam: 'it' }, 
      { ontvNaam: 'is' }, 
      { ontvNaam: 'working' } 
     ]; 
     }, 
     errorCallback: function(){ 
     console.log('failed'); 
     } 
    } 
    }).controller("RoutestopCtrl", function($scope, $rootScope, MovilizerExtender) { 
    MovilizerExtender.startUpMovilizer().then(function(){ 
     $scope.routestops = $rootScope.routestops; 
    }); 
    $rootScope.$watch('routestops', function(){ 
     $scope.routestops = $rootScope.routestops; 
    }); 
    }); 
संबंधित मुद्दे