Ember.js 余烬服务-为应用程序创建默认设置
我的应用程序有很多报告,我有dateBegin和dateEnd 理想的行为是:Ember.js 余烬服务-为应用程序创建默认设置,ember.js,Ember.js,我的应用程序有很多报告,我有dateBegin和dateEnd 理想的行为是: 应用程序首次加载,dateBegin=月份开始(2001年6月)/dateEnd=今天(2011年6月) 当用户更改日期(比如mai-01/mai-31)时,所有控制器都会获得新的日期 我现在拥有的代码: //app/services/defaults.js 从“余烬”导入余烬; 导出默认的Ember.Service.extend({ init:函数(){ 这个; var dateEnd=moment().格式
- 应用程序首次加载,dateBegin=月份开始(2001年6月)/dateEnd=今天(2011年6月)
- 当用户更改日期(比如mai-01/mai-31)时,所有控制器都会获得新的日期
//app/services/defaults.js
从“余烬”导入余烬;
导出默认的Ember.Service.extend({
init:函数(){
这个;
var dateEnd=moment().格式('YYYY-MM-DD');
var dateBegin=moment().startOf('month').format('YYYY-MM-DD');
如果(!this.get('dateEnd')){this.set('dateEnd',dateEnd);}
如果(!this.get('dateBegin'){this.set('dateBegin',dateBegin}
}
});代码>
您可以创建一个单例对象来保存日期:
App.SelectedDates = Ember.Object.extend({
dateBegin: null,
dateEnd: null // or whatever value you want...
});
然后,将该对象注入所有控制器,如下所示:
Ember.Application.initializer({
name: 'register-global-dates',
initialize: function(container,app) {
app.register('my:globalDate', App.SelectedDates.create(), {
singleton: true,
instantiate: false
});
app.inject('controller', 'dateglobal', 'my:globalDate');
}
});
现在,在控制器中,您可以执行以下操作:
this.dateglobal.set('dateBegin', '2015/01/12');
它在所有控制器中都是相同的对象
我希望我正确理解了您的问题,这就是解决方案…控制器1、2来自不同的路线?两者都使用查询参数扩展了Ember.Controller,用于混合报表?我认为问题在于对具有不同路由的不同控制器使用相同的查询参数。你的路由器文件看起来怎么样?嗨,是的,它们是不同的路由。Route1/Controller1,Route2/Controller2。我为查询参数添加了另一个带有route mixim的代码段(我必须在每个路由上定义modelName)。我只是在我想按日期筛选的所有路由/控制器上导入此混音。嗨,史蒂夫,谢谢。。。但它不起作用。我已经开始注射了,如中介绍的。看起来控制器在引导时已经有了初始属性,并且在您实例化它之前不会更改。