关于SO(例如, A , B , C , D )和其他站点(例如Ember docs ),关于配置Ember以允许跨域请求,似乎有很多讨论。 一切都很好,但是我宁愿让Ember的后端完成与远程服务(Ember的服务器端组件而不是用户的浏览器)之间进行通信的工作。 有记录吗? 有人可以提供例子吗?
我以为可以轻松修改支持ember serve
命令的HTTP服务器。 相反,我使用了Ember CLI的--proxy
标志。 它允许您使用远程服务来提供数据。
为此,假设远程服务器foo.com:3000
在/resource
路径下提供JSON数据。 配置控制器以获取数据,如下所示:
import Ember from 'ember';
function getRemoteResource(store){
var dfd = Ember.$.Deferred();
Ember.$.ajax('/resource')
.done(function(data){
store.createRecord('model', data);
dfd.resolve();
})
.fail(function(err){
dfd.reject(new Error("An error occurred getting data.", err));
});
return dfd.promise();
}
export default Ember.Controller.extend({
actions: {
getResource:function(){
var dataStore = this.store;
return getRemoteResource(dataStore);
}
}
});
使用这样的模板来调用控制器的操作:
<h2>Remote data example</h2>
<button class="my-button" {{action 'getResource' }}>
Get resource
</button>
假设您的代码位于host bar.com
,则像这样启动ember: ember serve --proxy http://foo.com:3000
。 然后,将浏览器打开到相应的页面以加载模板(例如http://bar.com:4200/index
),单击按钮,查看是否已加载远程数据。