アプリに奇妙な問題があります。コレクションをレンダリングすると、印刷すると「空」になりましたが、コレクション内のこのコレクションを console.log すると、モデル内に 2 つの配列があります。さて、これは私のスクリプトです:
define([
'jquery',
'underscore',
'backbone',
'text!templates/folder.html',
'models/folder',
'collections/folder',
], function($, _, Backbone, FolderTemplate, FolderModel, FolderCollection){
var FolderView = Backbone.View.extend({
el:$('#folder'),
template:_.template(FolderTemplate),
initialize: function(){
this.render();
},
render: function(){
console.log(this.collection.models);
}
});
return FolderView;
});
ビューを呼び出すには、別のアプリ内で使用します:
this.folders = new FolderCollection();
this.folders.fetch({ data: { dir: 'uploads'} });
this.foldersView = new FolderView({collection: this.folders});
このアプリconsole.log(this.collection.models);
では空ですが、setTimeOut を使用してこのようなものを作成すると、console.log が正しい配列を返します。
define([
'jquery',
'underscore',
'backbone',
'text!templates/folder.html',
'models/folder',
'collections/folder',
], function($, _, Backbone, FolderTemplate, FolderModel, FolderCollection){
var FolderView = Backbone.View.extend({
el:$('#folder'),
template:_.template(FolderTemplate),
initialize: function(){
var here = this;
setTimeout(function(){
here.render();
},800);
},
render: function(){
console.log(this.collection.models);
}
});
return FolderView;
});
setTimeOut なしで使用するにはどうすればよいですthis.render()
か。そのようなものを作成するのは正しくないか、ロジックではないと思うからです。
ありがとう