Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js collection.fetch()在view.render()之后工作_Backbone.js - Fatal编程技术网

Backbone.js collection.fetch()在view.render()之后工作

Backbone.js collection.fetch()在view.render()之后工作,backbone.js,Backbone.js,您好,我正在寻找一种方法,以便在集合.fetch()完成后对SomeFunc()进行异步调用。大概是这样的: this.collection.fetch(function(){ console.log('Fetch is done so I'm going to render the view!'); }) 我想要它的原因: 我的视图呈现了一些集合。我使用fetch()函数从REST API的服务器端获取此集合中的全部数据。在fetch()之后,我尝试渲染视图。但是在render开始时,

您好,我正在寻找一种方法,以便在
集合.fetch()完成后对SomeFunc()进行异步调用。大概是这样的:

this.collection.fetch(function(){
   console.log('Fetch is done so I'm going to render the view!');
})
我想要它的原因:

我的视图呈现了一些集合。我使用
fetch()
函数从REST API的服务器端获取此集合中的全部数据。在fetch()之后,我尝试渲染视图。但是在render开始时,fetch()仍然没有完成,因此视图是用空集合呈现的。解决这个问题的方法是什么


Thx用于任何预付款。

只需使用成功、错误回调:

this.collection.fetch({
success: function(){
   console.log("Fetch is done so I'm going to render the view!");
},
error: function() {...}
})

只需使用成功、错误回调:

this.collection.fetch({
success: function(){
   console.log("Fetch is done so I'm going to render the view!");
},
error: function() {...}
})

我不同意使用
success
error
回调。它们至少没有利用主干网集合的有用性。您需要尽可能地使用主干事件!看看绑定到集合的“重置”事件,该事件是在成功获取后触发的。尝试在视图的
初始化
方法中执行类似操作:

initialize: function () {
  this.collection.bind('reset', this.render, this);
},

更少的代码,更干净,并且可能利用了库中最有用的部分:事件

我不同意使用
成功
错误
回调。它们至少没有利用主干网集合的有用性。您需要尽可能地使用主干事件!看看绑定到集合的“重置”事件,该事件是在成功获取后触发的。尝试在视图的
初始化
方法中执行类似操作:

initialize: function () {
  this.collection.bind('reset', this.render, this);
},

更少的代码,更干净,并且可能利用了库中最有用的部分:事件

通过使用jQuery的延迟对象,您可以稍微整理一下:

顺便说一句,我知道你可以将事件用于类似的目的,但如果你按照手册的字面意思:

“请注意,不应使用fetch来填充页面加载时的集合-加载时需要的所有模型都应已引导到位。fetch用于为不立即需要的接口延迟加载模型:例如,具有可切换打开和关闭的注释集合的文档。”


然后,您可能会根据需要提取数据,可能是通过一种方法,该方法以我演示的方式包装并调用fetch。

您可以利用jQuery的延迟对象稍微整理一下:

顺便说一句,我知道你可以将事件用于类似的目的,但如果你按照手册的字面意思:

“请注意,不应使用fetch来填充页面加载时的集合-加载时需要的所有模型都应已引导到位。fetch用于为不立即需要的接口延迟加载模型:例如,具有可切换打开和关闭的注释集合的文档。”


然后,您可能会根据需要提取数据,可能是通过一种方法,该方法以我演示的方式包装并调用fetch。

谢谢。这正是我想要的!可以通过使用this.collection.fetch()来整理这个。然后(doSomething)@Crungmungus-好主意:)+1谢谢。这正是我想要的!可以通过使用承诺this.collection.fetch().然后(doSomething)@Crungmungus-好主意:)+1 Thx的可能副本很多,好主意!请记住,除非传入reset:true(主干网1.0),否则在获取时不会触发reset。在@Crungmungus good shout上看到“升级到主干网1.0”的注释,可能会让他困惑一段时间,然后他才想出很多好主意!请记住,除非传入reset:true(主干网1.0),否则在获取时不会触发reset。看到@Crungmungus good shout上的“升级到主干网1.0”注释,他可能会困惑一段时间才明白这一点