Backbone fetch,promise and if else.它们是如何工作的
Backbone fetch, promises and if else. how do they work?
我有一个问题,我不知道如何在主干应用程序中巧妙地解决。我有一个视图,需要提取2个或3个不同的模型。
我有一个概要文件视图,它向客户显示他的任务和概要文件信息,但当coach访问它时,我还想加载coach模型,使coach能够切换内容。
承诺与if-else语句的关系如何?我可以用我写的方式写代码吗?它是这样工作的吗?
var tasks = new App.Task.Collections.Tasks();
var coaches = new App.Coach.Collections.Coaches();
var user = new App.User.Models.User();
if(App.User.Models.currentUser.isCoach()){
var userPromise = user.fetch();
var coachPromise = coaches.fetch();
var tasksPromise = tasks.fetch({
data: {
userId: userdId
}
});
$.when(userPromise, coachPromise, tasksPromise).then(function(){
App.Layout.page.show(layout);
});
}else{
var userPromise = user.fetch();
var tasksPromise = tasks.fetch({
data: {
userId: userdId
}
});
$.when(userPromise, tasksPromise).then(function(){
App.Layout.page.show(layout);
});
}
承诺如何与if-else语句配合使用?
您的代码看起来是正确的。代码中的if/else语句不会影响所有的promise,因为在它们对应的块中有所有的.fetch()
调用。只需记住将所有这些集合传递到要显示的布局即可。
您可以在Array上收集承诺,然后在时将其传递给$
var promises = [];
promises.push( modelA.fetch() ); // default
if(value){
promises.push( modelB.fetch() ); // conditionally added
}
$.when.apply($, promises).then(function(){
// do your stuff
});
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- ajaxToolkit PopupControlExtender不工作.过时的
- HTML标记在脚本标记中工作
- 在JavaScript中的类中,push和concat的工作方式有何不同