当我使用 $location.search() 更改参数时,不要重新加载 ngView 模板
Don't reload the ngView template when I change a parameter with $location.search()
我 关于如何使用 Angularjs 在 URL 中设置参数,以便它们可以在页面重新加载时保留。但它导致 Google 地图出现问题。
我正在使用 ngRoute
浏览我的应用程序。我在 URL 中设置参数时遇到的问题是,每次我设置参数(无论是 $location.search()
还是普通的旧 window.location.hash='something'
)时,Google Maps 地图将被卸载。我尝试更改参数名称,因为我认为 Google 地图默认会监听其中的一些选项。但事实并非如此。
一旦我完全摆脱了 ngRoute
代码,而不是 ngView
指令,我将我的页面包含在 ng-include
中,当我操纵了参数。
我不太清楚到底发生了什么或为什么会发生,但我猜想 ngRoute
认为它必须再次编译我的模板文件,因为 "something" 在URL。所以我想以某种方式向 ngRoute 解释,如果 ?
之后的部分发生变化,那么它不应该再次尝试编译我的模板文件(并随后销毁加载的 Google 地图) ,因为这些只是我的额外选择。但是,如果?
之前的部分改变了,那也没关系,因为那时候页面就改变了。
或者,是否有另一种更好、更 Angular 的方法来解决这个问题?
这是我的ngRoute
配置:
app.config(function($httpProvider, $routeProvider) {
// Routing
$routeProvider.when("/", {
redirectTo: "/Map"
}).when("/Map", {
controller: "MapController",
templateUrl: "tpl/view/map.html"
}).when("/Table", {
controller: "TableController",
templateUrl: "tpl/view/items-table.html"
}).otherwise({
templateUrl: "tpl/view/404.html"
});
});
这是我的换页代码:
$scope.navigate = function(location) {
$location.path(location);
};
这就是我设置自定义 GET 参数的方式,根据我的另一个 Whosebug 问题中的代码:
var params = $location.search();
params.source = source.filename;
$location.search(params);
您正在寻找 reloadOnSearch
属性。
app.config(function($httpProvider, $routeProvider) {
...
}).when("/Map", {
controller: "MapController",
templateUrl: "tpl/view/map.html",
reloadOnSearch: false
})
...
});
https://docs.angularjs.org/api/ngRoute/provider/$routeProvider
我
我正在使用 ngRoute
浏览我的应用程序。我在 URL 中设置参数时遇到的问题是,每次我设置参数(无论是 $location.search()
还是普通的旧 window.location.hash='something'
)时,Google Maps 地图将被卸载。我尝试更改参数名称,因为我认为 Google 地图默认会监听其中的一些选项。但事实并非如此。
一旦我完全摆脱了 ngRoute
代码,而不是 ngView
指令,我将我的页面包含在 ng-include
中,当我操纵了参数。
我不太清楚到底发生了什么或为什么会发生,但我猜想 ngRoute
认为它必须再次编译我的模板文件,因为 "something" 在URL。所以我想以某种方式向 ngRoute 解释,如果 ?
之后的部分发生变化,那么它不应该再次尝试编译我的模板文件(并随后销毁加载的 Google 地图) ,因为这些只是我的额外选择。但是,如果?
之前的部分改变了,那也没关系,因为那时候页面就改变了。
或者,是否有另一种更好、更 Angular 的方法来解决这个问题?
这是我的ngRoute
配置:
app.config(function($httpProvider, $routeProvider) {
// Routing
$routeProvider.when("/", {
redirectTo: "/Map"
}).when("/Map", {
controller: "MapController",
templateUrl: "tpl/view/map.html"
}).when("/Table", {
controller: "TableController",
templateUrl: "tpl/view/items-table.html"
}).otherwise({
templateUrl: "tpl/view/404.html"
});
});
这是我的换页代码:
$scope.navigate = function(location) {
$location.path(location);
};
这就是我设置自定义 GET 参数的方式,根据我的另一个 Whosebug 问题中的代码:
var params = $location.search();
params.source = source.filename;
$location.search(params);
您正在寻找 reloadOnSearch
属性。
app.config(function($httpProvider, $routeProvider) {
...
}).when("/Map", {
controller: "MapController",
templateUrl: "tpl/view/map.html",
reloadOnSearch: false
})
...
});
https://docs.angularjs.org/api/ngRoute/provider/$routeProvider