【发布时间】:2015-04-27 17:02:58
【问题描述】:
我正在尝试将来自 ajax 调用的响应返回给 Ember js 帮助程序。在 Helper 中使用 Promise 的 Asynchoronous 调用返回 [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>
【问题讨论】:
-
github.com/instructure/ic-ajax 用于 ajax 调用。并在 .then(cb, failure);
标签: jquery ajax asynchronous ember.js rsvp-promise