2016-05-20 4 views
1

Я попытался перейти от страницы aangularjs к другой странице, но она не работает.не удалось перейти на страницу в angularjs

Мой nodejs файл

app.get('/signup', function(req, res, next) { 
    res.sendFile(path.join(__dirname, '../public/templates', 'test.html')); 
    }); 

module.exports = app; 

Моя Angularjs страница 1

<!DOCTYPE html> 
<html ng-app="signApp"> 
<head> 

</head> 
<body ng-controller="signCtrl" ui-view="content">  

    <a ui-sref="home">Home</a> 
</body> 

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<script src="/controller/test.js"></script> 

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.15/angular-ui-router.min.js"></script> 

</html> 

Мой контроллер

var app = angular.module('signApp', ['ui.router']); 

    app.config(function($stateProvider) { 
     //$locationProvider.html5Mode(true); 
     $stateProvider 
     .state('home', { 
      url: 'home', 
      views: { 
       '[email protected]': { 
       templateUrl: 'templates/register.html', 
       controller: 'signCtrl' 
       } 
      } 
      }); 

    }); 

    app.controller('signCtrl', function($scope, $state) { 
     $state.go('home'); 
    }); 

Моя другая страница

<!DOCTYPE html> 
<html ng-app="signApp"> 
<head> 

</head> 
<body ng-controller="signCtrl">  

    <form ng-submit="regForm()"> 
     <br> user name: 
     <input type="text" ng-model="user.name"> 
     <br> 
     <br> password: 
     <input type="text" ng-model="user.password"> 
     <br>  
     <input type="submit" value="Submit"> 
    </form> 

</body> 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<script src="/controller/test.js"></script> 

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.15/angular-ui-router.min.js"></script> 
</html> 

используя этот код навигация dosen't бывает. в url я получил знак #. Если с помощью поставщика местоположения для удаления #, ссылка будет черна. пожалуйста, помогите мне

ответ

0

Во-первых, в вашем контроллере вы забыли добавить «/» в URL:

var app = angular.module('signApp', ['ui.router']); 

    app.config(function($stateProvider) { 
     //$locationProvider.html5Mode(true); 
     $stateProvider 
     .state('home', { 
      url: '/home', 
      views: { 
       '[email protected]': { 
       templateUrl: 'templates/register.html', 
       controller: 'signCtrl' 
       } 
      } 
      }); 
    }); 

    app.controller('signCtrl', function($scope, $state) { 
     $state.go('home'); 
    }); 

Вторая вещь, которую я заметил, что это не так в том, что ваш второй шаблон содержит

<!DOCTYPE html> 
<html ng-app="signApp"> 
<head> 

</head> 
<body ng-controller="signCtrl"> 

вам не нужно все это, вам нужно только то, что вы добавите на свою страницу, как только вы перейдете к своему представлению.

Третья вещь, что вы должны определить два отдельных государства «дом» и «» home.register

.state('home.register', { 
     parent: 'home', 
     url: '/signup', 
     views: { 
      '@home': { 
       template: 'your template path ' 

      } 
     } 
    }) 
    .state('home', { 
     url: '/home', 
     views: { 

       template: 'your home template' 


     } 
    });