- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 Google map 开发 AngularJs 指令。看到这个 plunker:https://plnkr.co/edit/cRdiu6QkZsnDoZBRM1sJ?p=preview
还附有指令代码:
app.directive('boatsMap', function () {
function link(scope, element, attrs) {
var cars = [{
id : 1,
price : 100,
latitude : 39.65,
longitude : 3.0175
}, {
id : 2,
price : 200,
latitude : 39.67,
longitude : 3.0173
}
];
console.log("Is running the directive");
var map;
var index = 0;
var zoom = 8;
var geocoder = new google.maps.Geocoder();
// Zoom is got from attributes, otherwise by default
if (attrs.zoom) {
zoom = attrs.zoom;
}
// Map center is calculated according to coordinates, otherwise is calculated accordint to location
if (attrs.latitude && attrs.longitude) {
var center = {
lat : parseFloat(attrs.latitude),
lng : parseFloat(attrs.longitude)
};
createMap(center, zoom);
} else if (attrs.location != undefined) {
geocoder.geocode({
'address' : attrs.location
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var location = results[0].geometry.location;
var center = new google.maps.LatLng(location.lat(), location.lng());
createMap(center, zoom);
}
});
}
function createMap(center, zoom) {
var mapOptions = {
center : center,
zoom : parseInt(zoom),
mapTypeId : google.maps.MapTypeId.ROADMAP,
mapTypeControl : false,
scaleControl : false,
streetViewControl : false,
rotateControl : false,
fullscreenControl : false
};
map = new google.maps.Map(element[0], mapOptions);
if (cars.length > 0) {
console.log("New car!");
for (var i = 0; i < 1; i++) {
var location = {
lat : parseFloat(cars[i].latitude),
lng : parseFloat(cars[i].longitude)
};
console.log("location.lat=" + location.lat);
console.log("location.lng=" + location.lng);
var content = '<div>'
+ cars[i].price + "€"
+ '</div>';
console.log("content=" + content);
var infoWindow = new google.maps.InfoWindow({
content : content,
position : location
});
google.maps.event.addListener(infoWindow, 'domready', function () {
var iwContent = document.querySelector('.gm-style-iw');
iwContent.parentNode.removeChild(iwContent.nextElementSibling);
iwContent.style.setProperty('width', 'auto', 'important');
iwContent.style.setProperty('right', iwContent.style.left, 'important');
iwContent.style.setProperty('text-align', 'center', 'important');
iwContent.style.setProperty('font-weight', '600');
iwContent.style.setProperty('color', '#777');
});
infoWindow.open(map);
}
}
}
};
return {
restrict : 'E',
replace : true,
template : '<div></div>',
link : link
};
});
我想要做的是,当用户点击带有价格的信息窗口时,内容应该更改为另一个 html 内容(与 Airbnb 的效果相同)。我知道这个 GM infoWindow 对象没有 onclick 事件,所以我想它必须以某种方式用 Jquery 完成(我不太了解 jquery)。
我的第二个问题是是否有一种“Angular 方式”可以做到这一点?
一个例子或我的 plunker 更新将不胜感激。
最佳答案
变化列表:
1) $compile
service需要注入(inject)指令:
app.directive('boatsMap', [ '$compile', function($compile) {
function link(scope, element, attrs) {
//..
}
return {
restrict: 'E',
replace: true,
template: '<div></div>',
link: link,
controller: function($scope, $element){
}
};
}]);
2) 添加需要从信息窗口触发的事件处理程序,例如:
function link(scope, element, attrs) {
scope.showDetails = function(){
//...
}
}
3) Angular 要知道信息窗口的内容,需要使用 $compile 服务编译它以触发像 ng-click
这样的事件,例如:
var content = '<button ng-click="showDetails()">Show details</button>';
var compiledContent = $compile(content)(scope);
var infoWindow = new google.maps.InfoWindow({
content: compiledContent[0],
position: location
});
已修改 plunker
更新
无法像这样注册信息窗口的click
事件:
google.maps.event.addDomListener(infoWindow, 'click', function () {
alert("Clicked in the infowindow!");
});
相反,您可以考虑以下解决方案。
像这样初始化信息窗口内容:
var content = '<div ng-click=showDetails()>{{infoWindowText}} €</div>';
在哪里
infoWindowText
scope 变量引入:
scope.infoWindowText = cars[0].price;
信息窗口的内容可以这样更新:
scope.showDetails = function(){
scope.infoWindowText = cars[1].price;
}
更新(2018 年 1 月 21 日)
Plunker演示如何:
关于javascript - Angular 指令 : How to change infoWindow HTML content 中的 Google map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48207138/
什么是 SASS 方法要求干燥这样的东西: .content p, .content ul, .content li, .content a 最佳答案 这 4 个元素都有共同的样式吗? .conten
我正在评估 Contentful.com 作为 Angular SPA 的内容引擎。 我面临的问题是按内容类型检索条目(例如,获取“博客”类型的所有条目)。如 documentation exampl
在我编辑的主 wiki 上有一个名为 Item: 的自定义命名空间,提示是该命名空间内的每个页面都显示为 Item:This_item - - Item:That_item -- Item:Foo_i
我正在尝试编写一个Python脚本,可以将图片和pdf上传到WordPress。我希望图像上传到文件夹‘/wp-Content/Uploads/’,将pdf文件上传到文件夹‘/wp-Content/U
是否可以监控进行了多少次 Contentful API 调用,并理想地在即将超过配额时收到通知? 谢谢 最佳答案 当然,您可以在右侧用户配置文件的下拉菜单 > Organizations and Bi
我在尝试在 IE8 中下载带有分号的文件名时遇到问题。 Response.AddHeader("Content-Disposition", "attachment; filename=\"" + at
我在 Contentful Delivery API 中运行查询以返回基于它的 slug 的特定页面项目。这个查询还设置了语言环境,以便它只返回我需要呈现的语言的数据。 但是,我还需要设置页面的 hr
我有兴趣使用 Gatsby建一个Netlify使用来自 Contentful 的内容的静态网站 Netlify 有这个不错的 Gatsby 入门指南: https://www.netlify.com/
目标是提交一个 git 分支。分支的“git status”的输出是: On branch zeromq_new Your branch is up to date with 'origin/zero
我目前正在学习在 ASP.NET 3.5 和 C# 中使用 MasterPages 和 ContentPlaceHolders - 现在,我正在拼命尝试通过我的编程代码编辑 asp:Content-C
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我使用 bootstrap 3 作为我的网格框架和 CSS 来创建一个具有一个倾斜/倾斜边缘的半透明区域,但由于分层不透明度,我的元素遇到了问题。 期望是中心是倾斜的,但右侧仍然是正方形。 有没有更好
IllegalArgumentException: 未知 URL 内容:// ^ 对上述内容做了噩梦。我检查了我的变量和路径,但看不出问题是什么?非常感谢任何指点! 这是我的痕迹。 java.lan
我有两个元素:一个是 元素,另一个是 元素。 populated-drop-down extends drop-down ,但是,正如您可能已经猜到的那样,它会尝试使用一些选项预先填充它。假设我可以简
我想我也有同样的问题。 Using multiple yields to insert content 我尝试了这个解决方案。我试过 在我的 application.html.erb 中有 conte
此链接 ( https://css-tricks.com/snippets/css/a-guide-to-flexbox/ ) 表示 justify-content 和 align-content 的
我现在正在探索绑定(bind),并且有一个 NSPopUpButton - 它为我提供了一些值选择下的绑定(bind)选项 - Content , Content Objects , Content
正在尝试在内容页面中加载内容 View 。当我运行代码时,它不会出现在我的内容 View 中。我正在从我的内容页面分配两个可绑定(bind)参数。 内容页面: 内容 View :
我想从我的 :before 标签中获取 content。我知道有些人会说它不是真正的(伪)元素,但在 JS 中有一种方法,但有人可以帮助我在 JQ 中做到这一点,因为我有多个标签并且我想用 $.eac
我创建了一个.sh脚本,并将结果记录在一个文件中,执行后我会尝试将文件内容作为mail正文发送。 这是我运行的命令: sh update.sh >> update.$(date +"%Y-%m-%d:
我是一名优秀的程序员,十分优秀!