【问题标题】:Drag n Drop re-order ability in meteor.js ToDo appmeteor.js ToDo 应用程序中的拖放重新排序功能
【发布时间】:2012-09-21 19:56:32
【问题描述】:

对象:-

在流星 ToDo 示例应用中添加拖放功能。

为什么:-

经历学习曲线。

我能想到的:-

使用 jquery UI(作为外部 js)并将更新事件绑定到待办事项列表。在 li 项上有一个数据字段,以便从同一个函数本身执行更新命令。

想知道是否存在更接近流星的方法..

谢谢!

【问题讨论】:

    标签: drag-and-drop meteor


    【解决方案1】:

    Meteor 的模板引擎 (Spark) 会在对基础数据进行任何更改时重新绘制您的 TODO 列表,我预计这会扰乱 JQuery UI 的正常操作。

    考虑为您的 JQuery UI 托管区域使用 constant

    【讨论】:

    • 我明白你的意思,但在这种情况下,“如果”我们使用 jUI,那么我不确定是否应该在“恒定”区域下执行受 spark 极大控制的列表
    • 您可以欣赏这种权衡。如果没有常量,您将需要在 Meteor 每次重建有问题的 DOM 元素时手动重新应用 jUI 状态。希望这将是一种轻松的体验,但有时不是(因此恒定的原因)
    【解决方案2】:

    来自this 的回答和上面劳埃德的回答,这里是解决方法:

    <template name="todos">
    ...code...
      {{#constant}}
      {{sort_code}}
      {{/constant}}
    </template>
    

    --

    <div class="todo-text" data-id="{{_id}}">{{text}}</div>
    

    在 todo.js 中

    Template.todos.sort_code = function(){
    Meteor.defer(function(){
    $('#item-list').sortable({
      update: function(e,iq){
        $('div.todo-text',this).each(function(i){
                var id = $(this).attr('data-id');
                Todos.update(id, {$set:{order:i+1}});
      });
      },
    });
    $( "#item-list" ).disableSelection();
    console.log('dd');
    
    });
    };
    

    【讨论】:

    • 在 Meteor 0.4.0 中发布 Spark 后,您使用的“hacky workaround”已经过时了。使用rendered 回调..
    • 嗯,在此之前我尝试使用“渲染”回调,但我不确定是否使用它,因为从控制台日志中我可以明显看出,该函数被触发了很多次,在单个页面加载(没有活动只是刷新,每次重新渲染 DOM 时都会发生同样的情况。我可能在这里遗漏了一些东西,一些帮助会很棒!
    • 我并没有说学习曲线会很容易!您只需要玩转并了解 Spark 的工作原理。..
    • 确保你也阅读了 Meteor github wiki 上的所有材料
    猜你喜欢
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多