我有一个需要构建Ember应用程序的项目。该应用程序将有许多路由,一些路由将有一些model
。
我目前的问题是某些信息是全局的,这意味着它们存在于每个页面(.hbs)中,我需要定期更新它。
我尝试将信息放在应用程序路径上,如下所示,但它不起作用,内容无法在其他路径上访问:
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params) {
return Ember.$.getJSON('/api/users/current')
}
});
我还尝试使用setInterval
重新加载信息,但这也不起作用。
import Ember from 'ember';
export default Ember.Route.extend({
init: function() {
var thyself = this;
var interval = setInterval(function(){
thyself.my_reload()
}, 1000);
this.set('interval', interval);
this.set('counter', {});
},
my_reload: function() {
var counter = this.get('counter');
if (counter >= 10) {
clearInterval(this.get('interval'));
}
this.set('data', Ember.$.getJSON('/api/users/current'));
}
});
我可以在哪里放置此信息,以便在所有路线上都可以使用?我如何定期重新加载信息?
我正在使用ember-cli
答案 0 :(得分:1)
@NicosKaralis, 你应该为它服务。
您可以通过命令生成它:ember generate service name-of-service
你应该创建方法。 如果您想从控制器获取访问权限,则应将其注入控制器:
nameOfService: Ember.inject.service()
,(请记住camelCase)
如果你想在你的控制器中使用你的服务中的某些方法,你会像这样使用它(带有计算属性的例子,你也可以使用它而不用计算属性):
someComputedFunctionInController: Ember.computed(function() {
this.get('nameOfService').yourFunctionFromService();
},
nextComputedFunctionInController: Ember.computed(function() {
this.get('nameOfService.getSomethingFromService');
}
更多: https://guides.emberjs.com/v2.7.0/tutorial/service/
希望,它会对你有帮助。