我对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>
我尝试在模型中执行此操作,结果是相同的。< / p>
目前我使用一些jquery隐藏和取消隐藏的东西来解决这个问题,但我不认为这是最好的方法?对我来说似乎很脆弱。任何建议都会非常有用
由于
答案 0 :(得分:1)
您可以使用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 data
返回promise
即可。 Ember理解当使用值解析promise时,model
。