【发布时间】:2016-07-05 01:16:49
【问题描述】:
我将我的 html 放在脚本中,如下面提到的链接中所述:-
Is it possible to use ng-include without web server?
喜欢:-
<script type="text/ng-template" id="infowindow.html">
<h4>{{data[0]}},{{data[1]}}</h4>
<button ng-click="test()">click</button>
</script>
但是当我试图将此 html 放入我的内容中以便在标记单击时显示信息窗口时,它不会加载模板。
这是我的代码:-
app
.factory(
'Map',
function($rootScope, $compile) {
var canvas = document.getElementById('map'),
defaults = {
center: new google.maps.LatLng(0, 0),
zoom: 4,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
return {
init: function(map_data, scope) {
var user_data = map_data.user.defaults,
locations = map_data.locations,
map_opts = {
"center": (typeof user_data.center !== 'undefined') ? new google.maps.LatLng(
user_data.center[0],
user_data.center[1]) : defaults.center,
"zoom": (typeof user_data.zoom !== 'undefined') ? parseInt(
user_data.zoom, 10) : defaults.zoom,
"mapTypeId": defaults.mapTypeId
};
var Map = $rootScope.map = new google.maps.Map(
canvas, map_opts);
scope.markers = [];
for (var count = locations.length, i = 0; i < count; i++) {
var latLng = locations[i],
marker = new google.maps.Marker({
position: new google.maps.LatLng(
latLng[0], latLng[1]),
map: Map,
title: '(' + latLng[0] + "," + latLng[1] + ')'
}),
infowindow = new google.maps.InfoWindow();
scope.markers[i] = {};
scope.markers[i].locations = [latLng[0],
latLng[1]
];
var content = '<div id="infowindow_content" ng-include ="\'infowindow.html\'"></div>';
var compiled = $compile(content)(scope);
google.maps.event
.addListener(
marker,
'click', (function(marker, scope,
compiled, localLatLng) {
return function() {
scope.data = localLatLng;
scope.test = test;
scope.$apply();
infowindow
.setContent(compiled[0].innerHTML);
infowindow.open(Map,
marker);
};
})
(
marker,
scope,
compiled,
scope.markers[i].locations));
}
}
};
});
任何帮助将不胜感激, 谢谢
【问题讨论】:
-
如果模板在单独的文件中并且您没有在 Web 服务器上运行,则可能是跨站点脚本问题。您能否确认浏览器控制台是否有任何错误?
-
嘿 A.J,感谢您的回复,但我在我的设备上将它作为离子应用程序运行。我在浏览器上没有收到任何错误。
-
尝试将 ng-include src ="infowindow.html" 改为 ng-include src ="'infowindow.html'"
-
@A.J,是的,我在控制台中收到此错误:-file:///android_asset/www/infowindow.html 无法加载资源:net::ERR_FILE_NOT_FOUND
-
所以,我只是尝试使用 var content = '';跨度>
标签: javascript angularjs ionic-framework infowindow angularjs-ng-include