javascript - 渲染项目列表会破坏顺序

标签 javascript sammy.js

我正在尝试从服务器加载订购项目的列表,然后使用我的模板(和 http://sammyjs.org/docs/tutorials/json_store_1 作为指导)呈现它们:

questions_container = $('.questions_container').first()

@sammy = Sammy '#foo', ->
  @use 'Template'

  @get '#/', (context) ->
    context.log 'Loading questions...'
    @load('questions.json')
      .then (items) ->
        $.each items, (i, item) ->
          context.log item.id
          context.render('assets/question.template', {item: item})
            .appendTo(questions_container)

我观察到有趣的效果,在 firebug 控制台中,所有项目都按照服务器返回的顺序记录(按 id 排序),但是在 DOM 中,它们往往会混合在一起。

发生这种情况是因为 render() 并行逻辑吗?如何确保 DOM 中保留项目的顺序?谢谢!

最佳答案

按照 Aaron Quint(Sammy 的作者)在 Google group 上的建议使用 renderEach :

questions_container = $('.questions_container').first()

@sammy = Sammy '#foo', ->
  @use 'Template'

  @get '#/', (context) ->
    context.log 'Loading questions...'
    @load('questions.json')
      .then (items) ->
        context.renderEach('assets/question.template', items)
          .appendTo(questions_container)

关于javascript - 渲染项目列表会破坏顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450817/

相关文章:

javascript - 第一次请求加载json数据并显示在首页

javascript - Node.js + Express - 在完成之前返回未定义的回调

javascript - 在 ajax 中加载脚本和内容

javascript - 迪兰达尔。将附加数据传递给其他 View

durandal - 忽略 DurandalJS 应用程序中的 anchor

javascript - Backbone,将数据保存到模型中的正确方法?

javascript - Sammy.js 读取路由 &,?

javascript - SammyJS,判断是否是第一个请求

jquery - Sammy.js + Mustache 在简单示例中给出错误 : haystack. indexOf 不是函数

javascript - 如何在 vuetify 中创建一个 fab 按钮?