Angular的Phonegap:设备已无法正常工作

时间:2014-03-02 17:51:09

标签: angularjs cordova

我相信我已经为Angular设置了一些在Phonegap中工作的东西,但显然设备功能没有我期望的行为。

所以我的设置如下:

的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的提示吗?感谢。

1 个答案:

答案 0 :(得分:1)

显然在角度1.2上,urlSanitizationWhitelist不再存在。 所以我只需删除$compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/);行,它就可以了。