我有一个标准的角页面,它与任何ui.router功能(index.html)都没有关联。从该页面中,我单击一个触发角调用的链接,而不是在某些操作之后,流程需要重定向到使用角ui.path模板的文件夹中的一个页面。
我创建了一个代表以下内容的柱塞:http://plnkr.co/edit/7UQTlMRQBMXGaRdHlPfs?p=preview (当前柱塞正在工作,但是第一页上有一个循环试图调用用$urlRouterProvider.otherwise(‘events’)创建的默认状态;)
index.html
<!DOCTYPE html>
<html ng-app="app">
<head>
<script data-require="angular.js@1.3.16" data-semver="1.3.16" src="https://code.angularjs.org/1.3.16/angular.js"></script>
<script data-require="ui-router@*" data-semver="0.2.15" src="//rawgit.com/angular-ui/ui-router/0.2.15/release/angular-ui-router.js"></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body ng-controller="LoginController as lgCtrl">
<h1>This page does not use ui.router</h1>
<a href="manage/home.html" ng-click="goToEvents()">Login</a>
</body>
</html>带有ui-view标记的页面位于manage文件夹中:manage/ page .page
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="https://code.angularjs.org/1.3.16/angular.js" data-semver="1.3.16" data-require="angular.js@1.3.16"></script>
<script data-require="ui-router@*" data-semver="0.2.15" src="//rawgit.com/angular-ui/ui-router/0.2.15/release/angular-ui-router.js"></script>
<script type="text/javascript" src="../app.js"></script>
</head>
<body ng-controller="EventsController as evtCtlr">
<h1>Hello manage/home.html</h1>
<div ui-view></div>
</body>
</html>要插入的templateUrl页面是: manage/events.html
<div ng-controller="EventsController as evtCtrl">
<h3>Events Page</h3>
<div>Some user email</div>
</div>app.js
'use strict';
(function () {
var app = angular.module('app', ['ui.router']);
/**
* Configuration for ui-router module. Handles navigation based on app states.
*/
app.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('events');
$stateProvider
.state('events', {
url: '/events',
views:{
'@manage/home':{
templateUrl: 'manage/events.html'
}
}
});
});
app.controller('LoginController', ['$scope','$window', '$state',
function($scope, $window, $state){
$scope.goToEvents = function(){
console.log('trying to load events');
//this call doesn't work, 404 - It should?? -->> see reference
//https://github.com/angular-ui/ui-router/wiki/URL-Routing
$window.location.href = 'manage/home.html/events';
//don't work
//$state.transitionTo('events');
//also don't work
//$state.go('events');
};
}]);
app.controller('EventsController', [function(){
console.log('EventsController');
}]);
})();我创建了一个代表以下内容的柱塞:http://plnkr.co/edit/7UQTlMRQBMXGaRdHlPfs?p=preview
我尝试过不同的方法从第一个非ui.router页面移动,但到目前为止都没有起作用。
做这件事最好的方法是什么?
发布于 2015-06-21 07:55:38
首先,不要将$state作为依赖项注入到LoginController中,因为与此控制器相关的视图不是UI路由。添加$state依赖项会导致您在示例中看到的作为UI-路由器的循环,然后将此视图视为路由。由于没有任何状态与此路由匹配,它尝试加载默认状态,其模板具有相对URL,然后在错误的Plunkr目录中查找该状态,这将导致404错误。
其次,要通过location.href重定向的URL应该有一个散列,否则它也会给404
LoginController的代码
app.controller('LoginController', ['$scope', '$window',
function($scope, $window) {
$scope.goToEvents = function() {
//Do Something
$window.location.href = 'manage/home.html#/events';
};
}
]);检查http://plnkr.co/edit/K2iBYu?p=preview上的工作示例
https://stackoverflow.com/questions/30882386
复制相似问题