jlm*_*kes 8 routes coffeescript pushstate angularjs
我将逐步介绍有问题的流程......
奇怪的是,我只是html5Mode = true在Webkit- firefox按需工作时才观察到这一点......
...
首先,我的server.coffee看起来像这样:
app.get '/partials/:partial', routes.partials
app.get '/api/test', api.test
app.get '*', routes.index
Run Code Online (Sandbox Code Playgroud)
基本上,所有请求都加载索引(引导Angular),视图/部分处理程序除外,以及使用原始JSON响应的测试api路由.
...
(我使用ui-router模块来管理嵌套视图和UI状态;它使用的$urlRouterProvider,与Angular非常相似$routeProvider)
其次,我的app.coffee看起来像这样:
app = angular.module('app', ['ui-router'])
.config([
'$stateProvider'
'$locationProvider'
'$urlRouterProvider'
($stateProvider, $locationProvider, $urlRouterProvider)->
$urlRouterProvider
.when('/api/test', [
'$window'
'$location'
($window, $location)->
$window.location.href = '/api/test'
])
.otherwise('/')
$stateProvider
.state 'home',
url: '/'
templateUrl: 'partials/index'
controller: 'IndexCtrl'
.state 'projects',
url: '/projects'
templateUrl: 'partials/projects'
controller: 'ProjectsCtrl'
$locationProvider.html5Mode(true).hashPrefix '!'
])
Run Code Online (Sandbox Code Playgroud)
由于一切都是异步的,我不得不使用$window访问window.location.href来触发页面刷新,以便服务器处理路由.
所以我的问题是,我可以在html5Mode不破坏后退按钮的情况下混合触发页面刷新与Angular的链接吗?这只是一个Webkit错误,和/或有更好的方法吗?
理想情况下,我的应用程序运行在Angular之外 - 但是"about"或"contact"页面(不需要动态或异步)之类的东西将使用常规页面刷新直接从服务器提供...
救命!
Eze*_*tor 18
两种选择:
<a />标签,请指定target="_self"让AngularJS知道它不应该捕获他们的点击(这些链接将由浏览器正常处理).这不是一个黑客; 这是正常记录的行为.$window.location = 'foo'你一直在做.这是可以接受的.| 归档时间: |
|
| 查看次数: |
2168 次 |
| 最近记录: |