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 文件。希望這可以幫助??鞓肪幋a!:)
編輯:
您還可以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);});
}
添加回答
舉報