programing

PhoneGap에서 각도 ng뷰/루팅이 작동하지 않음

yellowcard 2023. 3. 26. 10:02
반응형

PhoneGap에서 각도 ng뷰/루팅이 작동하지 않음

PhoneGap의 ngView에 문제가 있습니다.

모든 것이 정상적으로 로딩되고 있는 것 같고, ng-controller를 사용하여 기본적인 컨트롤러도 작동시킬 수 있습니다.단, ngView에서 루팅을 사용하려고 하면 아무 일도 일어나지 않습니다.

index.displaces를 표시합니다.

<!doctype html>
<html ng-app>
<head>
    <script type="text/javascript" src="lib/cordova-2.4.0.js"></script> 
    <script type="text/javascript" src="lib/angular-1.0.4.min.js"></script>
    <script type="text/javascript" src="js/app.js"></script>
</head>
<body>

<a href="#/test">Test</a>

<div ng-view></div>

</body>
</html>

app.module

angular.module('App', []).config(function ($routeProvider) {

    $routeProvider.when('/test', {
        controller: TestCtrl,
        template: '<h1> {{ test }} </h1>'        
    });

});

function TestCtrl($scope) {
    $scope.test = "Works!";
}

에 「」가 됩니다.onMessage(onPageFinished, fle:///android_asset/www/index.html#/test)마다, 하지 않고 합니다.#경로를 찾을 수 없다는 오류가 발생합니다.

내가 다른 곳에 준비해 둔 걸로 봐서는, 이게 효과가 있을 거야.어떤 도움이라도 주시면 감사하겠습니다.

몇 가지 질문이나 포럼을 검색한 결과, 신뢰성 있게 동작할 수 있었습니다.이게 바로 제가 깨끗한 PhoneGap 프로젝트에서 실행하는데 필요한 것입니다.

index.displaces를 표시합니다.

<!DOCTYPE html>
<html ng-app="App">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="format-detection" content="telephone=no" />
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
    <link rel="stylesheet" type="text/css" href="css/index.css" />
    <title>Hello World</title>
</head>
<body>

    <a href="#/">Main View</a>
    <a href="#/view">New View</a>

    <div ng-view></div>

    <!-- Libs -->
    <script type="text/javascript" src="lib/cordova-2.5.0.js"></script>
    <script type="text/javascript" src="lib/angular-1.0.5.js"></script>

    <!-- App -->
    <script type="text/javascript" src="js/index.js"></script>
    <script type="text/javascript" src="js/routers.js"></script>
    <script type="text/javascript" src="js/controllers.js"></script>
    <script type="text/javascript">
        app.initialize();
    </script>
</body>
</html>

해 주세요.<html ng-app="App">명령어 값이 없으면 앱이 로드되지 않으므로 반드시 포함시키십시오.

index.displaces를 표시합니다.

var app = {
    initialize: function() {
        this.bindEvents();
    },
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, true);
    },

    onDeviceReady: function() {
        angular.element(document).ready(function() {
            angular.bootstrap(document);
        });
    },
};

이 "PhoneGap"을 할 때 "Angular"를 수동으로 'ondeviceready'

routers.displaces

angular.module('App', [])
.config(function ($compileProvider){
    $compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/);
})
.config(function ($routeProvider) {

    $routeProvider
    .when('/', {
        controller: TestCtrl,
        templateUrl: 'partials/main.html'
    })
    .when('/view', {
        controller: ViewCtrl,
        templateUrl: 'partials/view.html'
    });
});

이 파일에는 두 가지 중요한 것이 들어 있습니다.요.<html np-app="App">다음으로 파일 URI를 화이트리스트에 포함하도록 라우터를 설정할 필요가 있습니다.저는 개인적으로 이것이 필요하지 않았지만, 여러 사람이 이 문제를 접한 것 같아서 포함시켰습니다.

controllers.controllers.displaces

function TestCtrl($scope) {
    $scope.status = "It works!";
}

function ViewCtrl($scope) {
    $scope.status = "Also totally works!";
}

마지막으로 몇 가지 기본적인 컨트롤러만 있으면 됩니다.

모든 것을 가지고 기투브 레포(github repo)를 만들었습니다.

이게 다른 사람에게 도움이 되길 바라.

나의 문제는 도메인 화이트리스트였다.

기본적으로 .config는 다음과 같이 되어 있어야 합니다.

angular.module('App', []).config(function ($routeProvider, $compileProvider) {

    $routeProvider.when('/test', {
        controller: TestCtrl,
        template: '<h1> {{ test }} </h1>'        
    });
    $compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/);
});

WWIW - 이 문제에 대한 2센트입니다.

위의 모든 것이 기능하고 있는 것 같았지만, $routerovider가 페이지를 네비게이트 할 수 없었습니다.

최종적인 문제는 jquery Mobile 라이브러리의 스크립트 태그 안에 include가 있는데 Angular가 URL 요청을 입수하기 전에 URL 요청을 가로채고 있었다는 것입니다.제거했을 때 내비게이션 요청이 $routerovider에 도달하여 모든 것이 정상적으로 동작하고 있습니다.

이게 도움이 됐으면 좋겠는데...

Google Chrome에서 로컬 액세스 정책 플래그를 비활성화하여 문제를 해결할 수 있었습니다.

$ open -a Google\ Chrome --args --disable-web-security for Mac OS.

로컬 액세스파일 정책을 디세블로 하는 방법에 대한 링크를 다음에 나타냅니다.

각도 1.2는 다음 방법을 제공하지 않습니다.

$compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/)

어쨌든, 더 이상 필요하지 않은 것 같아.모바일로 테스트해 봤는데 필요 없어요.

언급URL : https://stackoverflow.com/questions/15105910/angular-ng-view-routing-not-working-in-phonegap

반응형