簡體   English   中英

Drop事件上的骨干模型集屬性

[英]Backbone Model Set Attribute on Drop Event

這可能是由於我是JavaScript新手,我只是不知道正確的語法,但是我無法使用當前的語法在此Drop事件上設置我的主干模型屬性。 有什么建議么? 我已經使用handleDrop運行了一些測試,並且能夠設置和保存模型實例,但是沒有使用handleDrop函數中的當前代碼進行測試。

始終歡迎其他有關更有效的編寫方法的建議:)

        //Set the data contained by the draggable elements
        var sourceID;
        var payloads = {
            poolpricedraggable: "poolprice",
            nonedraggable: "none"
        };

        //Set the data contained in the droppable elements
        var targetID;
        var targets = {
            panelone: "panel_one:",
            paneltwo: "panel_two:",
            panelthree: "panel_three:",
            panelfour: "panel_four:",
            panelfive: "panel_five:",
            panelsix: "panel_six:"              
        }

        //Create variable for all draggable & droppable elements
        var element = function(id) { return document.getElementById(id); }

        //Create event handlers for all drag and drop events
        function handleDragStart(event) {
            sourceID = this.id;
        }
        function handleDrop(event) {
            if(event.preventDefault) event.preventDefault();
            targetID = this.id;
            var dataattribute = targets[targetID];
            var datavalue = payloads[sourceID];
            var data = dataattribute + " " + datavalue;
          preflist.set(data);
            preflist.save();
        }

        //Add listeners for those events to the correct dashboard elements
        element('poolpricedraggable').addEventListener('dragstart', handleDragStart, false);

        element('panelone').addEventListener('drop', handleDrop, false);
        element('paneltwo').addEventListener('drop', handleDrop, false);
        element('panelthree').addEventListener('drop', handleDrop, false);
        element('panelfour').addEventListener('drop', handleDrop, false);
        element('panelfive').addEventListener('drop', handleDrop, false);
        element('panelsix').addEventListener('drop', handleDrop, false);

我假設preflist是骨干模型。 您的錯誤發生在這里:

var data = dataattribute + " " + datavalue;
preflist.set(data);

這里的data變量是一個字符串,但是Backbone模型set -function將屬性的哈希作為鍵值對

設置 model.set(屬性,[選項])

在模型上設置屬性哈希(一個或多個)...

因此,您應該這樣做:

// var data = dataattribute + " " + datavalue; REMOVE THIS
var data = {};
data[dataattribute] = datavalue;
preflist.set(data);

編輯,畝太短的評論更好

根據Backbone.js的文檔

您還可以傳遞各個鍵和值。

因此,這顯然是一個更好的解決方案:

preflist.set(dataattribute, datavalue);

希望這可以幫助?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM