我有一个处理用户身份验证的服务,并通过模型获取用户数据。它提取的数据之一是开始饮食计划的日期。我想用这个日期来计算一个数字:自程序开始以来的天数,所以我可以用这个数字来查询从CMS中提取内容的不同模型。
我无法在模板以外的任何地方访问该号码。
这是控制台的信息中心
import Ember from 'ember';
export default Ember.Controller.extend({
authManager: Ember.inject.service('session'),
});
这是模板
{{#if authManager.currentUser.activeCleanse}}
You are on a cleanse that starts
{{authManager.currentUser.cleanse_start}}
{{else}}
You are not on a cleanse.
{{/if}}
以上所有代码都有效,但是当我在控制器中尝试这样的事情时:
activeCleanse: Ember.computed( function(){
return this.get('authManager.currentUser').then( (user) => {
return user.cleanse_active;
}.bind(this))
}),
startDate: Ember.computed( function(){
return this.get('authManager.currentUser').then( (user) => {
return user.cleanse_start;
}.bind(this))
})
将模板替换为:
{{#if activeCleanse}}
You are on a cleanse that starts {{startDate}}
{{else}}
You are not on a cleanse.
{{/if}}
它不响应activeCleanse
为假(模板似乎只检查其存在),而日期标记只显示[object Object]
。
我实际上是想在控制器中获取日期,以便我可以操纵它作为参数之一传递到仪表板路线,该路线根据特定日期获得模型:
信息中心路线
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.get('store').queryRecord('cleanse-post', {
filter: {
tag: 'day-1'
}
});
},
});
我希望能够根据日期的计算动态设置过滤器的标记。
任何帮助将不胜感激。我觉得我一直在这个圈子,我不知道该尝试什么。
答案 0 :(得分:0)
activeCleanse
它的计算属性取决于authManager.currentUser
,因此您的计算属性格式应该是这样的activeCleanse: Ember.computed('authManager.currentUser',function(){ //return the result }),
不需要bind(this)
,因为将使用特定上下文调用计算属性,在您的示例中this
将是控制器。
DS.PromiseObject
以使其正常工作。activeCleanse:Ember.computed(function(){ return DS.PromiseObject.create({ promise: this.get('authManager.currentUser').then( (user) => { return user.cleanse_start; }) })
在你的情况下,我会说你可以在路线上使用setupController钩子,你可以设置activeCleanse
属性,
this.get('authManager.currentUser').then( (user) => {
this.set('activeCleanse,user.cleanse_active);
});