- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
这是一个远景,但 UI-router 非常流行,我想也许这里有人会对这个问题有见解。
我正在将一个项目迁移到 Angular JS。该项目由一个包含多个不同面板的页面组成——每个面板都是使用 AJAX 从服务器下载为 HTML,使用 Javascript 注入(inject)页面,并与其自己的 href 相关联,href 由 jQuery History 管理。 .
jQuery 历史跟踪浏览器状态并在每个面板注入(inject) Javascript 后相应地更新 window.href。例如:
Panel 1:
window.location.href // http://myapp.com/panel1
History.getLocationHref() // http://myapp.com/panel1
History.getPageUrl() // http://myapp.com/panel1
Panel 2:
window.location.href // http://myapp.com/panel2
History.getLocationHref() // http://myapp.com/panel2
History.getPageUrl() // http://myapp.com/panel2
Panel 3:
window.location.href // http://myapp.com/panel3
History.getLocationHref() // http://myapp.com/panel3
History.getPageUrl() // http://myapp.com/panel3
等等等等
因为这些面板中的每一个都是注入(inject)的,而不是在注入(inject)到 DOM 后使用 Angular 编译它们,所以我为每个面板引导单独的 AngularJs 应用程序。到目前为止,这一直运行良好。
现在我在 Panel 2 中使用 AngularJs UI-router - 所以我可以在替代模板中呈现数据。问题是,UI-Router 必须以某种方式混淆浏览器历史记录和/或窗口 href。因为一旦该应用程序被实例化,假设我从面板 1 开始,然后单击面板 2,然后单击面板 3,我遇到了这个问题:
Panel 1:
window.location.href // http://myapp.com/panel1
History.getLocationHref() // http://myapp.com/panel1
History.getPageUrl() // http://myapp.com/panel1
Panel 2:
window.location.href // http://myapp.com/panel2
History.getLocationHref() // http://myapp.com/panel2
History.getPageUrl() // http://myapp.com/panel2
Panel 3:
window.location.href // http://myapp.com/panel2
History.getLocationHref() // http://myapp.com/panel2
History.getPageUrl() // http://myapp.com/panel3
基本上,一旦 UI-Router 被应用程序实例化,jQuery History 就不再起作用,并且位置 href 会保留在 ui-router 应用程序的 URL 中。
我能做些什么来禁用 ui-router 与窗口位置 href 的交互吗?或者是模块工作方式不可或缺的一部分?
如果有帮助,这是我的 panel2.states.js 文件:
angular.module("panel2")
.config(["$stateProvider", function($stateProvider) {
$stateProvider
.state('table', {
views: {
index: {
// controller: "TableController as at",
templateUrl: "table.html"
}
}
})
.state('tiles', {
views: {
index: {
// controller: "TilesController as tc",
templateUrl: "tiles.html"
}
}
});
}]);
我通过摆脱 jQuery History 和它添加的超出我们需要的功能来解决我的特定问题。相反,我只是直接与 window.history
交互:
window.history.pushState({panel: "panel3"},
document.title + " | " + 'panel3',
window.location.href + "/panel3");
我仍然很好奇是什么导致了这种交互,以及 angular 或 angular ui-router 是否直接与 window.location 交互?
最佳答案
Angular 公开了 $location
服务来与 window.location
对象交互,我很确定 ui-router
使用它并且不是直接的 window.location
对象。你可以decorate config
函数中的 $location
服务拦截对 $location
服务的所有调用,并提供您自己的不使用 的实现窗口位置
。
例如(高度简化):
$provide.decorate('$location', function($delegate) {
var currentUrl = '';
//we base the proxy on the original
var locationProxy = Object.create($delegate);
//and overwrite what we need
locationProxy.url = function(newUrl) {
if (newUrl) {
$rootScope.$broadcast('$locationChangeStart' /* other event args here*/);
currentUrl = newUrl;
$rootScope.$broadcast('$locationChangeSuccess' /* other args here */);
} else {
return currentUrl;
}
};
});
它确实需要您以与原始 $location
服务兼容的方式实现所有功能,因此这可能需要相当多的工作。
关于javascript - 禁用 UI-Router 与 window.location 的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29855486/
我正在尝试在 python 中编写正则表达式来查找目录路径:我的文本如下所示: text = "The public disk is: \\\\diskA\\FolderB\\SubFolderC\\
我想写一个LocationListener,它把最近最精确的位置作为它的位置。我打算在我的 LocationListener 中使用此代码: @Override public void
我想建立一个有光泽和 plotly 的交互式图表。 Shiny 有一个内置功能来获取有关用户交互的信息。比如:input$plot_click、input$plot_dblclick、input$pl
我正在使用 MobileFirst 提供的 WL.Device.Geo.acquirePosition(onGeoLocationSuccess, onGeoLocationFailure, opti
我最近开始使用 ionic 框架,它里面有 angular js。为了在屏幕之间导航,我使用了 $location.path 并且效果很好。但是,在我下载的一个示例中,我看到 $state.go 被用
谁能解释一下这种行为?我使用 history.pushState(null, null, '#test'); 推送历史状态。然后,当尝试使用console.log(window.location.ha
这里是相关代码: https://www.facebook.com/sharer/sharer.php?u={{$location.absUrl()}} https://www.facebook.c
这两个重定向之间有什么区别?我有一个应用程序,当我使用时,它可以在 chrome 和 android 4 上正常工作,但在 android 2.x.x 上不能正常工作 document.locatio
JavaScript 的区别是什么 window.location.href = window.location.href 和 window.location.reload() 功能? 最佳答案 如果
有什么区别 window.location.href="http://example.com"; window.location.replace("http://example.com"); wind
JavaScript 的区别是什么 window.location.href = window.location.href 和 window.location.reload() 功能? 最佳答案 如果
以下 3 个指令之间有区别吗? location ~* \.(png)$ { expires max; log_not_found off; } location ~ \.(png)$ {
位于正文末尾之前的以下脚本在 Internet Explorer 和 Chrome(以及任何其他浏览器)中都会被调用。但重定向到指定的 URL 仅发生在 IE 中。我还尝试了 window.locat
我正在使用 Angular ngRouter。我需要更改 url 路径以及搜索参数。我知道 $location.path 和 $location.search,但是有没有一个函数可以同时设置它们? 最
在angularjs中用$location和window.location哪个更好。 例如,我们可以使用$location.path() 或window.location.href 来完成同样的工作。
我在我的网站上使用上述 2 个命令。似乎它们对 95% 访问它应该触发的页面的人有效,但对其他人则不会。 有谁知道是否可以完全阻止这些 javascript 命令?我真的很头疼为什么它们有时不起作用。
这是我无法弄清楚的另一个错误。 我有这个类ExtendedLocation extends Location实例化时抛出 ClassCastExceptioncurrentGpsLocation =
我一直在尝试简单地将一个包含两个变量(一个字符串和一个位置)的类推送和读取到 firebase,但我一直收到此错误。 **com.google.firebase.database.DatabaseEx
我注意到 iPhone 上的“常用位置”似乎比监控 iOS 访问的应用程序 (https://developer.apple.com/reference/corelocation/clvisit) 使
在我的 javascript 代码中,在某些时候,我需要刷新窗口(用户上传了新图片但在页面中仍然可以看到它) 我想知道为什么 location.href = location.href 不刷新窗口?
我是一名优秀的程序员,十分优秀!