我试图在 Backbone 应用程序中使用 Leaflet。加上它的 AMD 要求 - 所以它不是页面中的脚本......我相信问题是它无法访问页面 DOM。
L.Map 接受一个字符串。不是 DOM...
这是一些代码。我什至尝试延迟几秒钟直到页面呈现。没有成功。
错误是“找不到地图容器”
define([
'jquery',
'underscore',
'backbone',
'collections/Collection',
'text!templates/map/Template.html',
'libs/leaflet-markercluster/leaflet-0.6.4'
], function($, _, Backbone, Collection, Template, L) {
var MapView = Backbone.View.extend({
el : "#sub-page",
template: _.template(Template),
delayedRender: function() {
try {
var map = this.map = new L.Map( '#map_canvas' );
} catch ( err ) {
console.log(err);
}
},
render : function() {
this.$el.html( this.template() );
setTimeout( this.delayedRender, 2 );
}
深入挖掘 Leaflet L.Map 构造函数会执行 document.getElementById,这在 AMD 主干应用程序中可能没有意义。
return (typeof id === 'string' ? document.getElementById(id) : id);