【问题标题】:Returning response from an asynchoronous call not working in Emberjs Helper从异步调用返回响应在 Ember Js Helper 中不起作用
【发布时间】:2015-04-27 17:02:58
【问题描述】:

我正在尝试将来自 ajax 调用的响应返回给 Ember js 帮助程序。在 Helper 中使用 PromiseAsynchoronous 调用返回 [object Object]

console.log(data.thumbnail_url); 正在工作,但 回调 没有返回 (<img...>) 响应。这里是JsFiddle

App.IndexRoute = Ember.Route.extend({
  model: function() {
   // for simply showing the problem, I've put the instagram id
   // Actually I will parse the id from the post body
   return ['fA9uwTtkSN'];
  }
});

Ember.Handlebars.registerBoundHelper("format-inst", function(input){
 // Add this part
 if (typeof input == 'undefined'){return;}

 function foo (URL) {
   return $.ajax({
       url: URL,
       dataType: "jsonp"
  });
 }
     var URL = 'http://api.instagram.com/oembed?url=http://instagr.am/p/'+input;
     var r = foo(URL).done(function (data){
                console.log(data.thumbnail_url);
                return '<img src="'+data.thumbnail_url+'">';                        
     });
     return new Ember.Handlebars.SafeString(r);
 });

这是 HandleBars 模板:

<script type="text/x-handlebars">
<h2>Welcome to Ember.js</h2>

 {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="index">
 <ul>
 {{#each post in model}}
  <li>{{format-inst post}}</li>
 {{/each}}
 </ul>
</script>

【问题讨论】:

标签: jquery ajax asynchronous ember.js rsvp-promise


【解决方案1】:

我认为你不能从助手那里得到承诺。我认为您可以将所有 ajax 放在路由中,例如在模型函数之后:

setupController: function(controller, model){
var imgs = Ember.A([]);
controller.set('imgs', imgs );

model.forEach( function(imgId){
  var url = 'http://api.instagram.com/oembed?url=http://instagr.am/p/'+imgId;
  $.ajax({url: URL, dataType: "jsonp"}).done(function(data){
    imgs.pushObject(Ember.Handlebars.SafeString('<img src="'+data.thumbnail_url+'">') );
  });
});

}

然后在模板中只绑定imgs:

{{#each image in imgs}}
  <li>{{image}}</li>
{{/each}}

随着 ajax 调用完成,Ember 数组将得到更新,并自动更新模板。

【讨论】:

  • 谢谢,但我猜你没有注意到代码中的注释。也就是说,这些不是单独的图像。在帖子正文内部,我想像那样展示它们,而不是分开。
猜你喜欢
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多