我正在嘗試使用主幹& jQuery爲原型應用製作模型應用程序。 在這一點上它非常小巧。 http://jsfiddle.net/IgnorantUser/u7JkX/在可拖動骨幹視圖的上下文中傳遞'drop'並將ui.position傳遞給它
我只有2個型號Canvas
和ButtonWidget
。 還有3個視圖:用於畫布的CanvasView
,用於ButtonWidget
的ButtonInCanvas
視圖和稱爲ButtonInToolbar
的虛擬視圖,它不受ButtonWidget模型的支持,而是從.button css類 獲取它的默認值,並用於拖動&放入畫布,用按鈕填充它。
因爲還有其他的部件(標籤,文本框,圖片處理等) 我已經採取了在「ButtonInToolbar」視圖的上下文中傳遞由「CanvasView」觸發的拖放事件處理的方法,由使用下面的代碼:
passDrop: function (e, ui){
if ($(ui.draggable).parent().is('#toolbar')){
ui.draggable.trigger('drop'); //sets the drop in the context of the dragged view (ButtonInToolbar)
}
我現在面臨的問題是,我想能夠在ui.position.left
和ui.position.top
值傳遞到ButtonInToolbar
觀點,以至於當我調用dropHandler方法追加一個新ButtonInCanvas
視圖,我可以通過放置的位置並將其實際放置的按鈕渲染。 我該怎麼做?
dropHandler: function() {
$('.canvas').append(new ButtonInCanvas({model: new ButtonWidget}).render().el);
}
我已經試過路過(event, ui)
上述功能中,這樣我可以有ui.position.left
的價值,但我得到「遺漏的類型錯誤:無法讀取的未定義的屬性‘位置’」。我怎麼能解決這個問題?
此外,在上面的代碼中,我使用畫布的選擇器而不是CanvasView
實例。考慮到將來會有不止一個CanvasView
,我如何關聯特定的CanvasView
實例,以便Widgets僅附加到它而不是所有具有一類畫布的DOM元素?
更重要的是,由於這是我第一次嘗試使用Backbone,並且它與「ToDo」應用程序沒有太多共同之處,您能否指出我的實現中的任何致命錯誤?事情我做錯了,我也可以更好/更有效的方式做了
Thanx!任何想法如何傳遞這些值時,我做$('。canvas')。append(new ButtonInCanvas({model:new ButtonWidget(})。render()。el);嘗試過各種東西,但沒有工作 – IgnorantUser
I已經更新了答案和小提琴,請檢查一下 – Lukas
太棒了,雖然我想通過我的模型屬性positionx和positiony中的ui.position或ui.offset,或者如果這不可行,請通過ui.position /ui.offses到ButtonInCanvas視圖,然後從那裏到模型 – IgnorantUser