gpt4 book ai didi

angularjs - 避免 ng-view 在 $location.search 更新 GET 参数时获取 "wiped"(更新)

转载 作者:行者123 更新时间:2023-12-02 08:39:25 33 4
gpt4 key购买 nike

所以我有一个使用传单库实例化的 map 对象。 map 实例在单独的模板中创建并以这种方式路由:-

var app = angular.module('myApp', ['ui', 'ngResource']);

app.config(function ($routeProvider) {

$routeProvider
.when('/', {
templateUrl: 'views/map.html',
controller: 'MapCtrl'
})
.otherwise({
redirectTo: '/'
});

});

当我想处理“搜索/过滤”并在搜索要加载到 map 实例的对象时控制 GET 参数时,问题就开始了。

这是我实现的一个简单的过滤器功能,它会根据用户点击的选定值(在下拉列表中)触发。

$scope.setFilter = function (fname, fvalue) {
console.log("Setting " + fname + " to " + fvalue);
var search_string = $location.search();
search_string[fname] = fvalue;
$location.search(search_string);
};

浏览器地址栏的 url 如我所料得到更新,但原始(传单) map 对象得到“更新”并从 View 中消失。这不是我想要的。

如何防止这种情况发生或控制此过程,以便仍然可以看到 map ?

最佳答案

这是因为更新 URL 参数会再次触发路由,这会导致 Controller 重新加载。有一个简单的修复方法。使用属性 reloadOnSearch 并将其设置为 false。这不会在 $location.search() 更改时重新加载 Controller

$routeProvider
.when('/', {
templateUrl: 'views/map.html',
controller: 'MapCtrl',
reloadOnSearch: false
})
.otherwise({
redirectTo: '/',
controller: 'MapCtrl',
reloadOnSearch: false
});

});

关于angularjs - 避免 ng-view 在 $location.search 更新 GET 参数时获取 "wiped"(更新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17961022/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com