4.從后臺(tái)獲取數(shù)據(jù)和修改數(shù)據(jù)

1.給Api配置跨域

因?yàn)镃lient和Api是不同的端口,如果不給Api設(shè)置允許跨域請(qǐng)求,Client是調(diào)用不到接口的,需要在Startup.cs的Configure方法中添加如下代碼

app.UseCors(builder => builder.WithOrigins("http://localhost:3000"));

2.獲取數(shù)據(jù)

注釋掉index.html中寫死的數(shù)據(jù)钟病,這些數(shù)據(jù)在index.js中通過(guò)調(diào)用http://localhost:5000/api/values接口來(lái)獲取并且將數(shù)據(jù)添加到對(duì)應(yīng)的元素上,代碼如下

var ajaxUrl = 'http://localhost:5000/api/values?parentId=ACB951B9-EA43-4F71-9E45-081229E3F26A&userId=FBAD9A6E-89D1-49E9-9CBD-F1D04C67443A';
getData(ajaxUrl, {}, function () {
    $('#user-choosn-tool').find('.drag-element').drag({
        'dragLimitId': '#user-choosn-tool',
        'dragEleClass': '.drag-element'
    });
});

function getData(url, data = {}, callback){
    $.get(url, data, function(response){
        appendEnableElement(response.enable);
        appendNotEnableElement(response.notEnable);

        typeof(callback) === 'function' && callback();
    });
}

function appendEnableElement(data) {
    var html = [];
    data.forEach((item) => {
        postData.push(item.setting);
        html.push(`<dl class="drag-element cross-element" data-index="${item.setting.sortCode}"  data-setting-id="${item.setting.id}">
                        <a href="javascript:void(0);">
                            <dd>
                                <img src="${item.imagePath}">
                            </dd>
                            <dt data-name="${item.code}" data-detail-id="${item.id}">${item.fullName}</dt>
                        </a>
                    </dl>`);
    });
    html.push(`<dl class="" id="submit-btn">
                    <a href="javascript: void(0);">
                        <dd class="tj_ico">
                            <img src="/images/ico_bc_2.png">
                        </dd>
                        <dt>保存</dt>
                    </a>
                </dl>
                <div class="clear"></div>`);
    $('#user-choosn-tool').html(html.join(''));
}

function appendNotEnableElement(data) {
    var html = [];
    data.forEach((item) => {
        html.push(`<dl class="all-portal-tool">
                        <a href="javascript:void(0);">
                            <dd>
                                <img src="${item.imagePath}">
                            </dd>
                            <dt data-name="${item.code}" data-detail-id="${item.id}">${item.fullName}</dt>
                        </a>
                    </dl>`);
    });
    html.push(`<div class="clear"></div>`);
    $('#can-choose-tool').html(html.join(''));
}

刷新瀏覽器可以看到下圖所示的結(jié)果


image.png

3.給圖標(biāo)添加雙擊事件

3.1 給第一排的圖標(biāo)添加雙擊事件

第一排的圖標(biāo)雙擊后應(yīng)該顯示到下面一排去,代碼如下

$("#user-choosn-tool").on('dblclick', '.drag-element', function () {
    if(isAnimate){
        return;
    }
    isAnimate = true;
    var $this = $(this),
        settingId = $this.data('settingId'),
        $choosnTool = $("#can-choose-tool"),
        html = this.innerHTML,
        $dl = $('<dl class="all-portal-tool">').html(html),
        i = index = Number($this.attr('data-index')),
        count = $('#user-choosn-tool').find('.drag-element.cross-element').length;

    // 如果settingId存在档悠,把postData的isDelete設(shè)為true
    if (settingId) {
        postData.find(item => item.id === settingId).isDelete = true;
    }

    $choosnTool.children().last().before($dl);
    $this.siblings('.drag-element').each(function(){
        $(this).data('drag').$crossEles.splice($this.index(), 1);
        $(this).data('drag').$dragEles.splice($this.index(), 1);
    });
    $this.drag('offEvent');
    $this.remove();
    
    while(++index <= count){
        (function(_index){
            $('#user-choosn-tool').find('[data-index="' + _index + '"]').delay((_index - i) * 200).animate({left: '-=100'}, 300, function(){
                $(this).attr('data-index', _index - 1).data('index', _index - 1);                       
            });
            if(_index === count){
                $('#submit-btn').delay((index - i - 1) * 300).animate({ left: '-=100' }, 300, function(){
                    isAnimate = false;
                    $('#user-choosn-tool').find('.drag-element').drag({
                        'dragLimitId': '#user-choosn-tool',
                        'dragEleClass': '.drag-element'
                    });  
                });
            }
        })(index);
    }
});

3.2 給第二排的圖標(biāo)添加雙擊事件

第一排的圖標(biāo)雙擊后應(yīng)該顯示到第一排的最后面去(保存按鈕前)廊鸥,并且需要解綁第一排圖標(biāo)的拖拽事件,待雙擊事件完成(點(diǎn)擊的第二排圖標(biāo)已經(jīng)添加到第一排了)后重新實(shí)例化辖所,代碼如下

$("#can-choose-tool").on('dblclick', '.all-portal-tool', function () {
    if(isAnimate){
        return;
    }
    isAnimate = true;
    var $this = $(this),
        $choosnTool = $("#user-choosn-tool"),
        count = $choosnTool.find('.drag-element.cross-element').length,
        pos = $('#submit-btn').position(),      
        html = this.innerHTML;
    $('#user-choosn-tool').find('.drag-element').drag('offEvent');
    $('#submit-btn').animate({ left: '+=100' }, 300, function() {
        var $dl = $('<dl class="drag-element cross-element" data-index="' + count + '">').html(html).css({
            left: pos.left,
            top: pos.top
        });
        $(this).before($dl);
        $this.remove();
        $('#user-choosn-tool').find('.drag-element').drag({
            'dragLimitId': '#user-choosn-tool',
            'dragEleClass': '.drag-element'
        }); 
        isAnimate = false;
    });
});

4.保存按鈕的點(diǎn)擊事件

$("#user-choosn-tool").on('click', '#submit-btn', function(){
        $("#user-choosn-tool .drag-element").each(function () {
            var $this = $(this),
                settingId = $this.data('settingId'),
                detailId = $this.find('dt').data('detailId'),
                sortCode = $this.data('index');

            if (settingId) {
                postData.find(item => item.id === settingId).sortCode = sortCode;
            } else {
                postData.push({
                    sortCode,
                    detailId,
                    userId: 'FBAD9A6E-89D1-49E9-9CBD-F1D04C67443A'
                });
            }
        });
        var url = 'http://localhost:5000/api/values';
        $.post(url, {settings: postData}, function (response) {
            $('#user-choosn-tool').find('.drag-element').drag('offEvent');
            $('#user-choosn-tool').off('dblclick, click');
            $("#can-choose-tool").off('dblclick');
        });
    });

git倉(cāng)庫(kù)地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惰说,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缘回,更是在濱河造成了極大的恐慌吆视,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酥宴,死亡現(xiàn)場(chǎng)離奇詭異啦吧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拙寡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門授滓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人肆糕,你說(shuō)我怎么就攤上這事般堆。” “怎么了诚啃?”我有些...
    開(kāi)封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵淮摔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我始赎,道長(zhǎng)和橙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任造垛,我火速辦了婚禮魔招,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘筋搏。我一直安慰自己仆百,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布奔脐。 她就那樣靜靜地躺著俄周,像睡著了一般。 火紅的嫁衣襯著肌膚如雪髓迎。 梳的紋絲不亂的頭發(fā)上峦朗,一...
    開(kāi)封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音排龄,去河邊找鬼波势。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尺铣。 我是一名探鬼主播拴曲,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼凛忿!你這毒婦竟也來(lái)了澈灼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤店溢,失蹤者是張志新(化名)和其女友劉穎叁熔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體床牧,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荣回,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了戈咳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片心软。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖除秀,靈堂內(nèi)的尸體忽然破棺而出糯累,到底是詐尸還是另有隱情算利,我是刑警寧澤册踩,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站效拭,受9級(jí)特大地震影響暂吉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缎患,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一慕的、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挤渔,春花似錦肮街、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至眼刃,卻和暖如春绕辖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背擂红。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工仪际, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓树碱,卻偏偏與公主長(zhǎng)得像肯适,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子成榜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容

  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的伦连。 ??事件雨饺,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,498評(píng)論 1 11
  • 當(dāng)一切塵埃落定,往日的喧囂歸于平靜绢馍,我們才會(huì)真正懂得:放棄向瓷,有時(shí)是一種明智選擇;失去舰涌,或許有另一種收獲猖任。把人生當(dāng)旅...
    仰沐_9dd7閱讀 291評(píng)論 0 1
  • 身處廬州,昨天還是蒸籠一般的天瓷耙,一個(gè)晚上朱躺,一切都變了。天陰沉起來(lái)搁痛,灰蒙蒙的长搀,讓人睜不開(kāi)眼。風(fēng)也起來(lái)了鸡典,冷嗖嗖地源请,吹...
    清泠韻閱讀 320評(píng)論 2 4
  • 歷來(lái)的端午節(jié)我都是在家里吃著現(xiàn)成的粽子,可今年的端午節(jié)彻况,我卻吃著自己動(dòng)手包的粽子谁尸。 端午節(jié)的前一天...
    王進(jìn)寶ACDC閱讀 237評(píng)論 0 0
  • 一襲夜衣, 暗自芬芳疗垛, 纏繞症汹,揮之不去的身影。 ——2017.11.08 夜暮 攝于 愛(ài)蓮湖畔
    OnTheWay逺山閱讀 8,282評(píng)論 3 7