javascript - Backbone Marionette : using emptyView for loading

标签 javascript backbone.js marionette

我正在使用 Backbone Marionettes CollectionView。我试图表明集合正在加载,所以我使用 emptyView 来显示加载器。

然而,这是一个糟糕的逻辑,因为有时集合是空的,因此它变成了一个损坏的加载器。

我试过使用这个脚本,但没有成功:https://github.com/surevine/marionette-loadingview-plugin

有没有人有更好的解决方案?这是我当前的代码:

//loadingview
define(["marionette", "text!app/templates/loading.html"], function(Marionette, Template) {
  "use strict";
  return Backbone.Marionette.ItemView.extend({
    template: Template
  });
})

//collection
define(["marionette", "text!app/templates/events/collection.html", "app/collections/events", "app/views/events/item", 'app/views/loading'], function (Marionette, Template, Collection, Row, LoadingView) {
  "use strict"
  return Backbone.Marionette.CompositeView.extend({
    template: Template,
    itemView: Row,
    itemViewContainer: "ul",
    emptyView: LoadingView,
    initialize: function () {
      this.collection = new Collection()
      return this.collection.fetch()
    }
  })
})

//item
define(["marionette", "text!app/templates/events/item.html"], function(Marionette, Template) {
  "use strict";
  return Backbone.Marionette.ItemView.extend({
    template: Template,
    tagName: "li"
  })
})

最佳答案

我通常做的是监听集合/模型的“请求”和“同步”事件。像这样:

var View = Backbone.Marionette.CompositeView.extend({
  template: Template,
  itemView: Row,
  itemViewContainer: "ul",

  collectionEvents: {
    'request': 'showLoading',
    'sync': 'hideLoading'
  },

  initialize: function () {
    this.collection = new Collection();
    return this.collection.fetch();
  }

  showLoading: function() {
    this.$el.addClass('loading');
  },

  hideLoading: function() {
    this.$el.removeClass('loading');
  }
});

关于javascript - Backbone Marionette : using emptyView for loading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19053708/

相关文章:

javascript - 替换 Windows '\\' 路径中的文件名

javascript - Backbone 中获取请求时未定义

javascript - Backbone : How to bind arguments for listenTo-callback?

javascript - Backbonejs - 在不更改 URL 的情况下触发路由事件

javascript - 如何在 Capybara 中重新抓取页面?

javascript - 如何使用 Javascript 保护机器人/爬虫的表单

php - 如何让 Backbone 和 MongoDB 的 id 无缝工作?

javascript - Backbone.js 中的 setTimeout() 函数

javascript - Backbone/Marionette - 检查模型是否存在

javascript - 如果所有选择都有值,则 jQuery 显示按钮