gpt4 book ai didi

ember.js - ember 动态适配器主机更新

转载 作者:行者123 更新时间:2023-12-05 01:02:28 25 4
gpt4 key购买 nike

我有一个类似这样的适配器:

var Adapter = DS.RESTAdapter.extend({
host: 'http://localhost:4200'
});

if (config.environment === 'production') {
Adapter.reopen({
host: 'http://foo.example.com'
});
}

这已经工作了一段时间,但最近出现了一些问题。我的 ember 应用程序与许多不同的子域(例如 foo.example.combar.example.com )交互。我的理解是 reopen更改所有实例,这就是我认为会发生的事情。当我浏览到 '/bar' 时,它在生产中使用了正确的适配器,但浏览到 '/foo' 仍然使用 bar.example.com端点。

我的问题有两个方面。首先,我在这里使用了正确的方法吗?

其次,我想根据运行时设置更改适配器。我需要解决 IE8 缺乏 CORS 支持的问题,所以我想如果我有一个 ie8 开关,适配器应该点击 example.com/foo而不是 foo.example.com .在我看来,这两个领域在概念上是相关的,但我很高兴错了。

更新

为了简化事情,我本质上想找到请求的主机名并将其传递给适配器。例如,如果我浏览到 www.example.com我希望适配器从 www.example.com/foo 获取记录,或浏览到 www.example2.com 时我希望适配器从 www.example2.com/foo 获取记录.我希望这是有道理的。这甚至可能吗?

最佳答案

我对此不是 100% 确定,但我的猜测是该值正在被缓存。我的建议是制作 host一个不稳定的计算属性。这实际上对您更有效,因为这将使您能够根据运行时配置更好地选择主机。尝试这样的事情:

var Adapter = DS.RESTAdapter.extend({
host: function() {
if (config.environment === 'production') {
return 'http://foo.example.com';
} else {
return 'http://localhost:4200';
}
}.property().volatile()
});

因为 Ember-Data 总是使用 Ember 的 get获取属性的方法,更改 host从普通属性到计算属性应该没有区别。因此,您可以在运行时选择主机,并确保每次都计算它。 (不要担心不缓存该值的性能,我保证它不会产生显着差异。)

关于ember.js - ember 动态适配器主机更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26479717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com