我正在制作一个网络应用,用户可以在地图上查看对象,按标记并转到包含信息的新视图。从这个角度来看,他们可以更深入地了解更多信息。
类似的东西:
我知道在遍历路线/状态时如何保持实际的模型状态。问题是当我回到浏览器历史记录时,我不想重新计算整个地图(带标记和所有内容)。换句话说,我希望在进一步遍历时保持/ map的渲染状态。
这可以通过使用搜索参数而不是/ map上的路由(即。/ map?treeid = 10)和禁用搜索重新加载,并在地图对象上执行ng-hide =“treeid”和ng-来轻松实现。显示在tree-info对象上。
我的问题是,是否有一种更好,更合适的方式以角度进行此操作?
提前致谢。
答案 0 :(得分:2)
解决“重新计算整个地图”问题,解决此问题的一种方法是将Google地图绘制在与ng-view
相同的级别,并将其移出视图以隐藏它。
这是一个说明如何工作的傻瓜:
http://plnkr.co/edit/wsjYoG2uXxYxXTmWdFGh?p=preview
注意隐藏时我是如何故意将地图的一部分留在屏幕上,以显示在更改路线时不会重绘。
答案 1 :(得分:0)
您可以创建专门的服务来存储数据。由于服务是单例,因此数据将在您的视图和控制器之间共享。像这样:
angular.module('myApp').factory('GlobalService', [
function() {
var _this = this;
_this._data = {
user: window.user,
authenticated: !! window.user
};
return _this._data;
}
]);
angular.module('myApp').controller('FooController',
['$scope', 'GlobalService',
function ($scope, GlobalService) {
$scope.global = GlobalService;
$scope.global.bar = someData;
...
]);
答案 2 :(得分:0)
这看起来很有用:AngularJS Performance Tuning for Long Lists。它详细介绍了在渲染大型/复杂数据结构时要避免的建议和陷阱。