免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
javascript – Backbone.js DOM在渲染方法中沒有準(zhǔn)備好應(yīng)用jquery魔法

我正在嘗試構(gòu)建一個(gè)包含多個(gè)列表的待辦事項(xiàng)列表.一切都很好.當(dāng)我想使用JQuery UI Sortable時(shí)會(huì)出現(xiàn)問題.
我在渲染函數(shù)中的TaskListView中添加了片段,但是我必須將它包裝到setTimeout函數(shù)中,以便等到DOM加載.

我很確定有更好的方法可以做到這一點(diǎn),但我還是找不到它.感謝幫助.

var TaskView = Backbone.View.extend({
    initialize: function(task) {
        this.task = task;
    },
    render: function() {
        var completedClass = "completedTask";
        if (this.task.completed == 100) completedClass = "pendingTask";
        var html = ""
          "<li class='task-<%= task.get('id') %> ' data-id='<%= task.get('id') %>' sortable='true'>"
          "<div class='float-left'><i class='icon-trash removeTask' data-id='<%= task.get('id') %>'></i></div>"
          "<div class='float-left'>"
          "<span class='editTask ' data-type='title' data-id='<%= task.get('id') %>'><%= task.get('title') %></span> "
          "</div>"
          "<div class='float-right'>"
          "<span class='editTask task-responsible label' data-type='responsible' data-id='<%= task.get('id') %>'><%= task.get('responsible') %></span>"
          "<span class='editTask task-deadline label' data-type='ended' data-id='<%= task.get('id') %>'><%= task.get('ended') %></span>"
          "<span class='label criticallyLevelToggle editTask <%= criticallyLevelClass %>' data-type='completed' data-id='<%= task.get('id') %>'><%= parseInt(task.get('completed')) %>%</span>"
          "</div>"
          "<div class='clear'> </div>"
         "</li>";

        var template = _.template( html, {task: this.task, criticallyLevelClass:this.task.getCriticallyLevelClass(), completed: completedClass});
        this.$el.html(template);
        return this;
    }
});

var TaskListView = Backbone.View.extend({
    initialize: function(tasks) {
        this.tasks = tasks;
    },
    render: function() {
        var html = ""
         "<ul class='tasks'>"
         "<%= tasksli %>"
         "<li><div class='float-left'><input type='text' placeholder='New task...' class='new-task' name='new-task'/></div><div class='clear'> </div></li>"
         "</ul>";
          "";
        var tasksRendered = "";
        if (_.isArray(this.tasks)) {
            for (var i = 0; i < this.tasks.length; i  ) {
                var tView = new TaskView(new Task(this.tasks[i]));
                tasksRendered  = tView.render().el.innerHTML;
            };
        }
        var template = _.template(html, { tasksli: tasksRendered});
        this.$el.html(template);

        setTimeout(function(){this.$('.tasks').sortable({
            stop: function(e, ui) {
                ui.item.trigger('drop', ui.item.index());
            }
        });}, 500);

        return this;
    }
});

解決方法:

而不是使用setTimeout,只需使用$(function(){})(或$(document).ready),就像通常等待DOM準(zhǔn)備好一樣.這些函數(shù)沒有什么特別之處,您可以隨時(shí)向它們添加新的回調(diào).所有你不必?fù)?dān)心的是在你的回調(diào)中保持這個(gè)含義.

render: function() {
    var html = ""
     "<ul class='tasks'>"
     "<%= tasksli %>"
     "<li><div class='float-left'><input type='text' placeholder='New task...' class='new-task' name='new-task'/></div><div class='clear'> </div></li>"
     "</ul>";
      "";
    var tasksRendered = "";
    if (_.isArray(this.tasks)) {
        for (var i = 0; i < this.tasks.length; i  ) {
            var tView = new TaskView(new Task(this.tasks[i]));
            tasksRendered  = tView.render().el.innerHTML;
        };
    }
    var template = _.template(html, { tasksli: tasksRendered});
    this.$el.html(template);
    var self = this;

    $(function(){
        self.$('.tasks').sortable({
        stop: function(e, ui) {
            ui.item.trigger('drop', ui.item.index());
        }
    })

    return this;
}

或者,(并且可能更正確)采取措施確保在DOM準(zhǔn)備好之前,您的骨干視圖沒有調(diào)用其render方法.

來源:https://www.icode9.com/content-1-251851.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Backbone隨筆總結(jié)
自己寫一個(gè)JS單向數(shù)據(jù)流動(dòng)庫
AngularJS vs. Backbone.js vs. Ember.js
AngularJS與Backbone誰更適合 | 皓眸IT
UC頭條:2020年JavaScript的10個(gè)最佳框架
Backbone.Events
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服