无法让 Angular-ui ui.route 与 Apache 一起路由
Can't get Angular-ui ui.route to route along with Apache
我通过 Apache 服务器在我的电脑上 运行 我的 Web 应用程序。
出于某种原因,ui.route 提供的路由从未达到我定义的一个简单状态,这真的很痛苦。
为了调试它,我输入了一个通配符来捕获所有路径,发现路径 ui.routing 不断获取是:"" .
这是为什么?
这是我的 app.js:
angular.module('populaApp', [
'populaApp.controllers','ui.bootstrap','ngEmbedApp','ui.router',
]).config( function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('state1', {
url: "*path",
templateUrl: "http://localhost/popula/app/html/tagsview.html",
controller: "listsController"
});
});
和我的 .htaccess:
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]
在我的控制器上,我写道:
console.log($stateParams);
它回应:
Object {path: ""}
不管路径到底是什么。
有什么建议吗?
您需要启用html5Mode
$locationProvider.html5Mode(true);
因此,在您的配置中
angular.module('populaApp', [
'populaApp.controllers','ui.bootstrap','ngEmbedApp','ui.router',
]).config( function($stateProvider, $urlRouterProvider,$locationProvider) {
$locationProvider.html5Mode(true);
$stateProvider
.state('state1', {
url: "*path",
templateUrl: "http://localhost/popula/app/html/tagsview.html",
controller: "listsController"
});
});
为什么?如果您不启用 html5mode
,默认情况下 angular 将仅匹配以 #
作为前缀的网址。即 myserver.com/#home
.
我通过 Apache 服务器在我的电脑上 运行 我的 Web 应用程序。 出于某种原因,ui.route 提供的路由从未达到我定义的一个简单状态,这真的很痛苦。
为了调试它,我输入了一个通配符来捕获所有路径,发现路径 ui.routing 不断获取是:"" .
这是为什么?
这是我的 app.js:
angular.module('populaApp', [
'populaApp.controllers','ui.bootstrap','ngEmbedApp','ui.router',
]).config( function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('state1', {
url: "*path",
templateUrl: "http://localhost/popula/app/html/tagsview.html",
controller: "listsController"
});
});
和我的 .htaccess:
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]
在我的控制器上,我写道:
console.log($stateParams);
它回应:
Object {path: ""}
不管路径到底是什么。
有什么建议吗?
您需要启用html5Mode
$locationProvider.html5Mode(true);
因此,在您的配置中
angular.module('populaApp', [
'populaApp.controllers','ui.bootstrap','ngEmbedApp','ui.router',
]).config( function($stateProvider, $urlRouterProvider,$locationProvider) {
$locationProvider.html5Mode(true);
$stateProvider
.state('state1', {
url: "*path",
templateUrl: "http://localhost/popula/app/html/tagsview.html",
controller: "listsController"
});
});
为什么?如果您不启用 html5mode
,默认情况下 angular 将仅匹配以 #
作为前缀的网址。即 myserver.com/#home
.