Emberjs是处理异步ajax调用的好方法

时间:2013-07-18 07:06:53

标签: javascript ember.js

我对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隐藏和取消隐藏的东西来解决这个问题,但我不认为这是最好的方法?对我来说似乎很脆弱。任何建议都会非常有用

由于

1 个答案:

答案 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