我正在考虑从lobbjs迁移到angularjs。
在骨干网中,我能够初始化一个视图,此时我将创建一个google map实例。然后,我可以平移/缩放/等并在视图之间切换,而不会丢失地图的当前状态。
鉴于以下使用angularjs:
layout.html
<body>
<div class="container-fluid" ng-view></div>
map.html
<div id="map_canvas" ng-controller="MapCtrl"></div>
我能够创建一个指令来渲染地图。问题在于,每次我切换回地图视图时,都会重新加载地图。
<map></map>
因此,根据我对Angular的了解,我认为我将创建一个MapController并在那里初始化地图。没有成功
最重要的是,我需要异步初始化Google地图并将数据本地或远程推送到它,并且能够导航应用程序而无需每次从头开始重新加载地图。
有人可以建议正确的方法吗?
谢谢 :)
尝试每位Andy Joslin建议:
在app.js中:
// Generated by CoffeeScript 1.3.3
(function() {
"use strict";
angular.module("ofm", ["ofm.filters", "GoogleMaps", "ofm.directives"]).config([
"$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) {
$routeProvider.when("/", {
templateUrl: "partials/home"
}).when("/map", {
templateUrl: "partials/map",
controller: MapCtrl
}).otherwise({
redirectTo: "/"
});
return $locationProvider.html5Mode(true);
}
]);
}).call(this);
在services.js中:
angular.module('GoogleMaps', []).
factory('wasMapInitialized', function() {
console.log("inside service");
var maps = 0;
if (!maps) {
maps += 1;
return 0;
} else {
return 1;
}
});
在controllers.js中:
function MapCtrl($scope) {
if (!GoogleMaps.wasMapInitialized()) {
var lat = 46.87916;
var lng = -3.32910;
var map_id = '#map';
initialize(map_id, lat, lng);
}
function initialize(map_id, lat, lng) {
var myOptions = {
zoom : 8,
center : new google.maps.LatLng(lat, lng),
mapTypeId : google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map($(map_id)[0], myOptions);
}
}
在map.html中
#map
<div ng-controller="MapCtrl"></div>
我收到错误消息:未知提供者:GoogleMapsProvider <-GoogleMaps
由于视图更改时视图会创建和销毁控制器,因此您希望地图数据保留在其他位置。尝试创建将存储数据的GoogleMap服务。
myApp.factory('GoogleMaps', function() {
var maps = {};
function addMap(mapId) {
maps[mapId] = {};
}
function getMap(mapId) {
if (!maps[mapId]) addMap(mapId);
return maps[mapId];
}
return {
addMap: addMap,
getMap: getMap
}
});
function MyController($scope, GoogleMaps) {
//Each time the view is switched to this, retrieve supermanMap
$scope.map = GoogleMaps.getMap('supermanMap');
$scope.editMap = function() {
$scope.map.kryptonite = true;
};
}
如果您不喜欢这种解决方案,那么还有其他方法可以实现。
问题内容: 我同时使用AngularJS和Foundation。 要初始化Foundation JS,您必须进行以下调用: 在AngularJS应用程序中进行此调用的最佳方法是什么?代码示例将不胜感激。 另外,如果我要围绕Foundation JS组件编写指令,那么如何确保Foundation已初始化? 问题答案: 您可以编写代码以将其引入Angular框架。这是一个使用with 的示例,也可以使
问题内容: 我在尝试使用异步数据初始化过滤器时遇到麻烦。 过滤器非常简单,它需要将路径转换为名称,但是这样做需要一个对应数组,我需要从服务器中获取该数组。 在返回函数之前,我可以在过滤器定义中执行操作,但是异步方面阻止了该操作 使用诺言可能是可行的,但我对角负载如何过滤没有明确的了解。这篇文章解释了如何通过服务实现这种魔力,但是是否有可能对过滤器做同样的事情? 而且,如果有人对如何翻译这些路径有更
据我所知,在Java11中,这两个操作可以在一行中完成,不是吗?
问题内容: 我正在尝试使用AngularJS 1.1.5的ng- repeat从选择框开始使用预填充选项。相反,选择始终始于未选择任何内容。它还有一个空选项,我不想要。我认为没有选择任何东西都会带来副作用。 我可以使用ng-options代替ng-repeat来工作,但在这种情况下我想使用ng- repeat。尽管我缩小的示例没有显示出来,但我也想设置每个选项的title属性,据我所知,没有办法使
在我的AngularJS应用程序中执行任何控制器之前,我有一些全局数据需要加载(即在AngularJS中全局解析依赖项)。 例如,我有一个,它带有方法,它向后端服务器发出请求,以获取关于当前通过身份验证的用户的数据。我有一个控制器需要这些数据来启动另一个请求(例如加载用户的余额)。 我怎样才能做到呢?
Initialization 初始化 Although it doesn’t look superficially very different from initialization in C or C++, initialization in Go is more powerful. Complex structures can be built during initialization a