我將地圖和backbone.js一起使用。使用的Map JS庫是Leaflet,但Google Maps API也適用於此。將地圖標記作爲Backbone.js觀看
問題: Backbone.js允許我們從數據(模型,集合)中分離表示(視圖)。使用Google Maps JS API或傳單時,我們似乎無法控制標記的渲染,因此無法爲每個標記提供Backbone視圖。這是真的?
與backbone.js一起使用Maps時,我開始在回調函數中獲取嵌套的視圖和事件處理函數。
JS(單張,類似於谷歌地圖API)
// Handle a dragging on the map
map.on('dragend', function() {
App.markersList.fetch(
data: someData,
processData: true
function() {
App.markersListView.render();
};)
});
// Handle a click on a Marker
map.on('popupopen', function() {
// Activate bootstrap tabs
$('#tabs').tab();
// Submit click handler
$('#submit-button').click(function() {
$.post('/api/submit-something',
{data: data},
function() {
// Remove some divs
$('#some-divs').fadeOut();
})
})
// Activate slideshow
Galleria.loadTheme('/js/vendor/galleria.miniml.min.js');
Galleria.configure({
height: 320
});
Galleria.run('#galleria');
// Validation
$('.email-link form').validate({
rules: { ... }
});
});
那麼你的想法......我需要做的這些骨幹的MVC結構之外。我可能錯過了將兩者結合在一起的正確方法。有任何想法嗎?謝謝!!
我之前在使用Google地圖時遇到了類似問題,無法將事件和回調分隔到視圖中。 –
骨幹視圖非常需要DOM元素。傳單標記和覆蓋不是DOM元素,所以我認爲你幾乎必須完全重寫骨幹視圖才能使其工作。即使您將視圖元素設置爲由Leaflet標記創建的DOM元素,您也必須更改骨幹視圖綁定事件的方式。事件目前綁定到DOM元素,但是對於要將事件綁定到添加到地圖的圖層的Leaflet。我並不是說這不可能,但它似乎需要對Backbone視圖進行相當重要的重寫。 – InPursuit