无法在 angularjs v1.6 中使用 ui 路由匹配路径



如何让 ui 路由器在 angular 中解析到正确的状态?

我正在尝试在我网站的子目录中运行一个角度应用程序,但无法获取 app.route.js 来正确路由请求。我将"否则"指令设置为"dang",这样如果它错过了,对我来说很明显。

我正在尝试通过以下 URL 访问应用程序:example.us/search

我登陆了 url 中的正确目录,因为我被路由到example.us/search/#!/dang

内容的文件位置(即app/partials/search.html)是搜索文件夹的子文件夹,位于根文件夹内。

angular.module('example.usApp')
.config(function($stateProvider, $urlRouterProvider,$locationProvider) {
$urlRouterProvider.otherwise('dang');
$stateProvider
.state('home', {
url: '/',
templateUrl: 'app/partials/search.html',
controller: 'searchController',
resolve: {
deps: ['$ocLazyLoad', function($ocLazyLoad) {
return $ocLazyLoad.load({
insertBefore: '#ng_load_plugins_before', 
files: [
'app/services/searchService.js',
'app/controllers/searchController.js',
'css/home.css'
]
});
}]
}
})...

编辑: 上面的 files[] 数组显然没有加载,因为 url 不匹配。我很难加载任何更改,因为浏览器认为我正在尝试倾斜路由并且没有在我指定的 URL 处重新加载页面。当我在 url 栏中键入更改并按回车键时,URL 被重写而不向服务器发出请求。

编辑2: 在回答一个问题时,是的,加载了 oclazyload.js。从开发人员工具中,您可以看到以下所有内容都按此顺序加载:

search/
bootstrap.min.css
style.css
angular.min.js
angular-ui-router.min.js
angular-local-storage.min.js
ocLazyLoad.min.js
angular-cookies.min.js
jquery.easing.1.3.js
angular-payments.min.js
app.js
app.constants.js
LoginService.js
app.route.js
bootstrap.min.js
app.constants.js
LoginService.js
app.route.js
bootstrap.min.js

这种状态是抽象的,所以你永远不会碰到它。我假设您的主要单个页面是索引.html对吧?如果是这样,请更改为以下内容:

angular.module('example.usApp')
.config(function($stateProvider, $urlRouterProvider,$locationProvider) {
$urlRouterProvider.otherwise('dang');
$stateProvider
.state('home', {
url: '/search',
templateUrl: 'app/partials/search.html',
controller: 'searchController',
resolve: {
deps: ['$ocLazyLoad', function($ocLazyLoad) {
return $ocLazyLoad.load({
insertBefore: '#ng_load_plugins_before', 
files: [
'app/services/HomeService.js',
'app/controllers/HomeMainController.js',
'css/home.css'
]
});
}]
}
})...

网址应example.us/#/search

最新更新