对不起,我的英文不好
我有一个应用程序,客户端部分是使用Underscore和Backbone开发的,服务器是laravel。 我有几个不同视图的数据库查询,这些咨询通过laravel进行,但作为json步骤,一些有13,000行和大约45,000个其他行,这些查询被缓存并完美地工作。 我希望我只能看到这些磋商和laravel siempe任何视图数据可用。 我有一个url router.js管理和呈现视图,但在每个视图中我需要这些数据时:
initialize: function() {
//This is a collection
var os = new OS();
os.fetch()then(function(){
//select2 example load drop down
});
}
答案 0 :(得分:0)
您必须扩展Backbone以支持承诺。我使用Q作为promise库,但应该与任何其他lib类似(示例在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;
}
});
然后,当您定义集合时,您需要从此扩展。希望这会有所帮助: - )