[英]Emberjs a good way to handle async ajax calls
我是emberjs的新手,想知道什么是处理以下内容的最佳方法:
视图:
{{#if model}}
<p>I exist</p>
{{else}}
<p>Login first</p>
{{#if}}
在我的JS中:
App = Em.Application.create({});
App.MyRoute = Em.Route.extend({
setupController: function(){
$.get("some/ajax/call",function(data){
controller.set('model', data)});
}
}
}};
在上面的示例中,setupController将完成并刷新<p>Login First</p>
然后当数据从ajax调用到达时,它更改为<p>I exist</p>
我尝试在模型中执行此操作,结果是一样的
目前,我使用一些jquery来隐藏和取消隐藏内容以解决此问题,但我认为这不是最好的方法吗? 对我来说似乎有点脆弱。 任何建议都会非常有帮助
谢谢
您可以使用afterModel
挂钩执行任何检查。 这个钩子触发jQuery返回的模型,但在setupController
之前。
model: function() {
return $.get("some/ajax/call",function(data){
return data;
}
},
afterModel: function(model) {
// if model is not valid
// transitionTo another route etc
}
请注意,您只是从jQuery promise
返回data
。 恩伯(Ember)明白,当一个承诺用价值解决时,它就是model
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.