下面的代码,我会尽力而为,但我没有得到任何答案,当点击按钮时,另一个页面不会打开......
.HTML
<button class="button button-small button-block button-positive sign-up"
type="button"
name="button"
ng-click="signUp()">
Sign up
</button>
应用.js
.config(function($stateProvider, $urlRouterProvider)
{
$stateProvider
.state('home',{
url:'/home',
abstract:true,
templateUrl:'templates/home/home.html',
controller:'LoginCtrl'
})
.state('home.login', {
url: '/login',
views:{
'home':{
templateUrl: 'templates/home/login.html',
controller: 'LoginCtrl'
}
}
})
.state('home.signup',{
url: '/signup',
view:{
'signup':{
templateUrl: 'templates/home/signup.html',
controller:'RegisterCtrl'
}
}
})
控制器
.controller('LoginCtrl', function($scope, LoginService, $ionicPopup,$state,$location) {
$scope.data = {};
$scope.login = function() {
LoginService.loginUser($scope.data.username, $scope.data.password)
.success(function(data) {
$state.go( 'home.main' );
})
.error(function(data) {
var alertPopup = $ionicPopup.alert({
title: 'Login failed!',
template: 'Please check your username or password !'
});
});
}
$scope.signUp = function(){
$location.path('/home.signup');
}
})
服务
angular.module('nt-wallet.services',[])
.service('LoginService', function($q) {
return {
loginUser: function(name, pw) {
var deferred = $q.defer();
var promise = deferred.promise;
if (name == 'ntt' && pw == 'fds') {
deferred.resolve('Welcome ' + name + '!');
}else if (name=='' && pw=='') {
deferred.reject('Wrong credentials.');
} else {
deferred.reject('Wrong credentials.');
}
promise.success = function(fn) {
promise.then(fn);
return promise;
}
promise.error = function(fn) {
promise.then(null, fn);
return promise;
}
return promise;
}
}
})
在上面的代码中,当我单击按钮时,下一页将无法打开..所以给我解决方案...我尝试了几个像 Location.href 一样,但它不起作用。
使用 $state.go('home.signup');
或 $location.path('/home/signup');
代替 $location.path('/home.signup');
编辑:最好使用 $state.go,因为您使用的是 ui.router。
您也可以使用 <button ui-sref="home.signup">
代替控制器功能。
您正在使用$stateProvider所以不要使用$location重定向,您必须更改状态。
在你的控制器中做这样的事情 -
$scope.signUp = function(){
$state.go('home.signup');
};