Umu*_*zer 5 angularjs angular-ui
在Angular Js的控制器中,我想知道是否启用了html5Mode.我怎样才能做到这一点?
在配置阶段我可以设置$locationProvider.html5Mode(true)或者我可以通过使用来学习启用或不启用html5Mode$locationProvider.html5Mode()
但是,我不能在"运行"块上执行相同的操作,如下所示:
var isHtml5enabled = $location.html5mode() // looking for something like this...
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
为什么我需要它?
我正在尝试修改ui-router.
ui-router的ui-sref指令和$state.href("")服务/方法生成url 而不考虑它是否在Html5Mode中.
如果启用了Html5Mode,那么这样的网址就可以了:/my/base/path/generated/by/uirouter
但是如果它被禁用,它应该是这样的:/my/base/path/#/generated/by/uirouter
所以我试图检测Html5Mode的状态.
我在配置阶段做了,但是在我读完信息后,另一个模块可以改变它的状态.(我猜......)这就是为什么我想确定控制器/运行块上Html5Mode的状态.
虽然现在已经很晚了,但我发现你可以检测出是否有HTML5模式$location.$$html5.所以你可以在控制器中执行此操作:
if (!$location.$$html5) {
// your code to execute when HTML5 mode is not enabled
}
Run Code Online (Sandbox Code Playgroud)
查看源代码后,您似乎无法检查html5Mode默认情况下控制器是否打开或关闭。但是,您可以编写自己的服务来使用.config并.controller公开此信息。
但我不得不问,为什么你的控制器需要知道这些信息?我猜你可能正在做一些最好以另一种方式完成的事情。
查看源代码后,您似乎无法检查html5Mode默认情况下控制器是否打开或关闭。但是,您可以编写自己的服务来使用.config并.controller公开此信息。
但我不得不问,为什么你的控制器需要知道这些信息?我猜你可能正在做一些最好以另一种方式完成的事情。
更新
我想如果您已经在进行ui-router更改,您可以继续修改location.js并重新打包 Angular (或者只是编辑 angular.js 并自己重新缩小它)?不需要太多,您只需要$location在第 512 行之后修改对象以添加公开局部变量的函数即可html5Mode。
| 归档时间: |
|
| 查看次数: |
1254 次 |
| 最近记录: |