永远不变的主干模型或集合

backbone models or collections that never change

本文关键字:模型 集合 永远      更新时间:2023-09-26

你好,抱歉我的英语不好

我有一个应用程序,其中客户端部分是用下划线和骨干和laravel服务器开发的。我在不同的视图中对数据库进行了几个查询,这些咨询通过laravel进行,但作为json步骤,有些有13,000行,有些有45,000行,这些查询被缓存并且工作完美。我希望我只能看到这些咨询和laravel的任何视图数据可用。我有一个url router.js来管理和渲染视图,但在每个视图中,当我需要这些数据时:

   initialize: function() {
     //This is a collection    
     var os = new OS();
     os.fetch()then(function(){
      //select2 example load drop down
     });
   }

你必须扩展主干来支持承诺。我使用Q作为承诺库,但应该与任何其他库相似(示例在es6中):

import {Collection} from 'backbone';
export default Collection.extend({
    fetch: function (options) {
        var deferred = Q.defer();
        options = options || {};
        var _success = options && options.success;
        var _error = options && options.error;
        options.success = (models, res, options) => {
          _success && _success(models, res, options);
          deferred.resolve([models, res, options]);
        };
        options.error = (models, res, options) => {
          _error && _error(models, res, options);
          deferred.reject([models, res, options]);
        };
        Collection.prototype.fetch.call(this, options);
        return deferred.promise;
    }
});

那么当你定义你的集合时,你当然需要从这个扩展。希望有帮助:-)