各种控制器之间的共享数据
Shared data between various controllers
我有一个项目需要构建 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
@NicosKaralis,
你应该为此使用服务。
可以通过命令生成:embergenerate service name-of-service
然后你应该创建方法。
当你想从你的控制器获得访问权限时,你应该将它注入你的控制器:
nameOfService: Ember.inject.service()
,(这里是 remember 驼峰式)
如果你想在你的控制器中使用你的服务的一些方法,你将像这样使用它(例如计算 属性,你也可以在没有计算 属性 的情况下使用它):
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/
希望对你有所帮助
我有一个项目需要构建 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
@NicosKaralis, 你应该为此使用服务。
可以通过命令生成:embergenerate service name-of-service
然后你应该创建方法。 当你想从你的控制器获得访问权限时,你应该将它注入你的控制器:
nameOfService: Ember.inject.service()
,(这里是 remember 驼峰式)
如果你想在你的控制器中使用你的服务的一些方法,你将像这样使用它(例如计算 属性,你也可以在没有计算 属性 的情况下使用它):
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/
希望对你有所帮助