1

私はangularJSが初めてです。

と を使用して小さな角度のアプリを作成しようとしていng-routeますng-view。ユーザーがログイン ボタンをクリックすると、URL が から に変更さlocalhost:8000localhost:8000/loginます。

ユーザーがページをリロードすると、ページの読み込み時にビュー/loginが読み込まれます。

ここに私が持っている HTML ファイルと がng-appありng-controllerます。

<html ng-app="loginSignUpApp">
   <head>...</head>
   <body ng-controller="mainController">
       <div ng-view></div>
   </body>
</html>

ユーザーがログインボタンから開始しlocalhost:8000てクリックすると、すべてが正常に機能します。ただし、ログイン ボタンをクリックした後、ユーザーがページをリロードすると、loginControllerトリガーされません。ビューがレンダリングされていません。

var app = angular.module('loginSignUpApp', ['ngMaterial', 'ngRoute', 'ngAnimate']);

app.controller('mainController', function($scope, $route, $routeParams, $location, $window, serviceFunctions) { 
    $scope.gotoPath = function (url) {
        $location.path( url );
        if(!$scope.$$phase) $scope.$apply()
    }
})
.controller('loginController', function($scope, $route, $routeParams, $location, $window, serviceFunctions, $http) {
    // some work...
})
.config(function($routeProvider, $locationProvider) {
    $routeProvider
    .when('/login', {
        title : 'Login',
        templateUrl: 'signIn.html',
        controller: 'loginController'
    })
    .otherwise({
        title : 'Landing Page',
        redirectTo:'/', 
        controller: 'mainController'
    })

    $locationProvider.html5Mode(true);
})
.run(['$rootScope', '$route', function($rootScope, $route) {
    $rootScope.$on('$routeChangeSuccess', function() {
        angular.element('title').html($route.current.title);
    });
}]);

ビューレンダリングのバックエンドおよび角度としてDjangoを使用しています。

どんな種類の助けもいただければ幸いです。ありがとうございます。

4

1 に答える 1

1

html5mode を使用しているため、サーバーは背面部分と前面部分を分割できないため、サーバーを構成する必要があります。これは Apache の例ですhttps://ngmilk.rocks/2015/03/09/angularjs-html5-mode-or-pretty-urls-on-apache-using-htaccess/

于 2015-07-01T19:23:51.580 に答える