Javascript 如何访问主干集合';什么样的结果?
我有一个集合,我知道它正在获取整个集合,但是如何访问从获取中返回的数据 /js/views/idea.jsJavascript 如何访问主干集合';什么样的结果?,javascript,backbone.js,Javascript,Backbone.js,我有一个集合,我知道它正在获取整个集合,但是如何访问从获取中返回的数据 /js/views/idea.js define([ 'jquery', 'underscore', 'backbone', 'collections/ideas' ], function($, _, Backbone, IdeasCollection) { var IdeasView = Backbone.View.extend({ el: $('#container'), ren
define([
'jquery',
'underscore',
'backbone',
'collections/ideas'
], function($, _, Backbone, IdeasCollection) {
var IdeasView = Backbone.View.extend({
el: $('#container'),
render: function(){
this.collection = new IdeasCollection();
console.log( this.collection.fetch() ); // I can see data
var data = {};
var template = _.template( $('#ideasView').html(), data);
$('body').removeClass().addClass('blog');
this.$el.html( template );
}
});
return IdeasView;
});
/js/collections/ideas.js(为简洁起见缩短)
fetch
是异步的。必须使用事件绑定样式
var IdeasView = Backbone.View.extend({
initialize: function () {
this.collection = new IdeasCollection();
this.listenTo(this.collection, 'sync', this.render);
this.collection.fetch();
},
render: function(){
var template = _.template( $('#ideasView').html(), this.collection.toArray());
$('body').removeClass().addClass('blog');
this.$el.html( template );
}
});
return IdeasView;
});
另一种方式
var that = this;
this.collection = new IdeasCollection();
this.collection.fetch({success: function (){
that.render();
}});
根据这一点,我可以添加一个回调来获取。这不是比附加事件处理程序更简洁吗?只是好奇。您可以执行事件或成功处理程序回调。事件更适合主干网,有时可能更正确(无论事件触发多少次都会响应),但两者都可以工作。主要的一点是你知道它不是同步的。
var that = this;
this.collection = new IdeasCollection();
this.collection.fetch({success: function (){
that.render();
}});