2014-03-02 77 views
1

我相信我已經爲Angular設置了一切,可以在Phonegap中工作,但顯然,deviceready函數沒有我期望的行爲。Phonegap與Angular:deviceready無法正常工作

因此,這裏是我如何設置:

的index.html

<html ng-app="app"> 
    <head> 
     <script type="text/javascript" src="js/lib/angular.min.js"></script> 
     <script type="text/javascript" src="cordova.js"></script> 
     <script type="text/javascript" src="js/lib/ready.js"></script> 
     <script type="text/javascript" src="js/app.js"></script> 
    </head> 
    <body> 
     <div class="header" ng-controller="HeaderController"> 
      <h3 id="logo"><img src="img/logo.png"/></h3> 
      <p>{{title}}</p> 
      <button ng-click="changeTitle()"></button> 
     </div> 
    </body> 
</html> 

app.js

$app = angular.module('app', ['fsCordova']); 

$app.config(function($compileProvider){ 
    $compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/); 
}); 

$app.controller('HeaderController', function($scope, CordovaService) { 
    CordovaService.ready.then(function() { 
     console.log("Setting the title"); 
     $scope.title = "This title"; 

     $scope.changeTitle = function() { 
      console.log("Changing the title"); 
      $scope.title = "Title changed"; 
     } 
    }); 
}); 

ready.js來自:http://www.ng-newsletter.com/posts/angular-on-mobile.html#native

angular.module('fsCordova', []) 
    .service('CordovaService', ['$document', '$q', 
     function($document, $q) { 

      var d = $q.defer(), 
       resolved = false; 

      var self = this; 
      this.ready = d.promise; 

      document.addEventListener('deviceready', function() { 
       resolved = true; 
       d.resolve(window.cordova); 
      }); 

      // Check to make sure we didn't miss the 
      // event (just in case) 
      setTimeout(function() { 
       if (!resolved) { 
        if (window.cordova) d.resolve(window.cordova); 
       } 
      }, 3000); 
     }]); 

標題顯示爲{{title}}的方式,而不是其值。當我點擊按鈕時,什麼也沒有發生,甚至沒有控制檯上的調試日誌。任何提示如何在Phonegap上設置Angular?謝謝。

+0

顯然在角1.2上urlSanitizationWhitelist不存在了。所以我只是刪除了 $ compileProvider.urlSanitizationWhitelist(/^\ s *(https?| ftp | mailto | file | tel):/);線和它的工作 –

回答

1

顯然在角1.2上urlSanitizationWhitelist不存在了。 所以我只是刪除$compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/);線,它的工作