2 回答
TA贡献1862条经验 获得超6个赞
试试这个
var contentString = '<div id="content">' +
'<h1 id="firstHeading" class="firstHeading">' +
usersMapInfos[i].username + '</h1>' +
'<img class="img-thumbnail" src="{!! asset('img/uploads/avatars/' . usersMapInfos[i].avatar) !!}" >' +
'<div id="bodyContent">' +
'<p>' + usersMapInfos[i].description + '</p>' +
'<p> <a href="{!! route('profiles.show', usersMapInfos[i].id) !!}"></a></p>' +
'</div>' +
'</div>';
TA贡献1836条经验 获得超13个赞
我不能发表评论,但我希望这个答案有帮助。
它不起作用的原因是因为您尝试获取它的方式。这是您可以做到的另一种方法。
//Use a variable to assign it instead of using inline blade syntax inside js html content
var imageSource = {{ asset('img/uploads/avatars/') }}
//Same for the other one
var Route = {{ route(profiles.show, ' + usersMapInfos[i].id + ') }}
var contentString = '<div id="content">' +
'<h1 id="firstHeading" class="firstHeading">' +
usersMapInfos[i].username + '</h1>' +
//Not sure why you have an image tag inside the source of another img tag
//I will remove this and make it one for the sake of this example
'<img class="img-thumbnail" src=" ' + imageSource + usersMapInfos[i].avatar + '" >' +
'<div id="bodyContent">' +
'<p>' + usersMapInfos[i].description + '</p>' +
'<p> <a href="' + Route + '"></a></p>' +
'</div>' +
'</div>';
所以基本上,将路由和资产分配给 js 变量并将这些变量分配给 js 文件。希望这可以帮助。快乐编码!:)
编辑:
您还可以data在 JQuery 中使用该属性。基本上只需将 data 属性分配给 html 上的元素。您在问题中提到您在同一个刀片文件中使用 JS。使用此方法,您也可以将此值传递给外部 JS 文件。这是一个例子。希望这可以帮助您入门:
//In your html, create a sample element. I will create a div for now
//This div assumes that this is a container for the map or something
<div id="container" data-imgsource="{{ asset('img/uploads/avatars/') }}" ></div>
//Now you can call this data attribute from your js code whether the js is in your blade file or in an external js file. Do this
$('#container').data("imgsource") //Voila. Now you have the link
//Put this in a variable and pass it in to your code. Like so:
var imageRouteLink = $('#container').data("imgsource") //Voila. Now you have the link
就我个人而言,我将这种方法用于我的许多 Ajax 和其他请求,因为这更干净并且让我可以使用外部 JS 而不是在刀片内部使用我的 JS。当然,在你的刀片中使用一点点 JS 并没有错,但是太多会导致以后头疼。
更新
这是更新后的 JS 代码:
var url_origin = window.location.origin;
for (let i = 0; i < usersMapInfos.length; i++) {
const contentString = '<div id="content">' +
'<a href="' + url_origin + "/profiles/" + usersMapInfos[i].id + '">' +
'<h1 id="firstHeading" class="firstHeading">' +
usersMapInfos[i].username + '</h1></a>' +
'<img class="img-thumbnail" src="' + url_origin + "/img/uploads/avatars/" + usersMapInfos[i].avatar + '" >' +
'<br>' +
'<div id="bodyContent">' +
'<p>' + usersMapInfos[i].description + '</p>' +
'</div>' +
'</div>';
const infowindow = new google.maps.InfoWindow({content: contentString});
const latLng = new google.maps.LatLng(usersMapInfos[i].address_latitude, usersMapInfos[i].address_longitude);
const marker = new google.maps.Marker({
position: latLng,
map: map,
title: usersMapInfos[i].username
});
marker.addListener('click', function() {infowindow.open(map, marker);});
}
添加回答
举报