Ember.js 观察员
Ember.js Observer
我想在服务中的变量上使用观察器,这是我的代码:
const get = Ember.get;
uploader:Ember.inject.service('uploader'),
progressChanged: Ember.observer(this.get('uploader').get('progress'), function() {
console.log('observer is called', this.get('uploader').get('progress'));
}),
那是错误:
Error while processing route: index this.get is not a function
当我尝试在警报中显示进度时:
actions:
{
getProgress()
{
alert("progress:"+this.get('uploader').get('progress'));
}
}
一切正常,但在观察者中却不行。我该怎么办?
this
上下文无效。正如 Kitler 所建议的,下面应该可以解决您的问题。
import Ember from 'ember';
export default Ember.Component.extend({
uploader:Ember.inject.service(),//if service name is uploader
progressChanged: Ember.observer('uploader.progress',function() {
console.log('observer is called', this.get('uploader').get('progress'));
}),
});
我建议不要过度使用观察者,你可以尝试使用计算属性。如果你只想单独显示进度那么你不需要观察者,你可以简单地使用 this.get('uploader.progress')
或通过 Ember.computed.alias('uploader.progress')
.
参考:https://guides.emberjs.com/v2.7.0/object-model/observers/
我想在服务中的变量上使用观察器,这是我的代码:
const get = Ember.get;
uploader:Ember.inject.service('uploader'),
progressChanged: Ember.observer(this.get('uploader').get('progress'), function() {
console.log('observer is called', this.get('uploader').get('progress'));
}),
那是错误:
Error while processing route: index this.get is not a function
当我尝试在警报中显示进度时:
actions:
{
getProgress()
{
alert("progress:"+this.get('uploader').get('progress'));
}
}
一切正常,但在观察者中却不行。我该怎么办?
this
上下文无效。正如 Kitler 所建议的,下面应该可以解决您的问题。
import Ember from 'ember';
export default Ember.Component.extend({
uploader:Ember.inject.service(),//if service name is uploader
progressChanged: Ember.observer('uploader.progress',function() {
console.log('observer is called', this.get('uploader').get('progress'));
}),
});
我建议不要过度使用观察者,你可以尝试使用计算属性。如果你只想单独显示进度那么你不需要观察者,你可以简单地使用 this.get('uploader.progress')
或通过 Ember.computed.alias('uploader.progress')
.
参考:https://guides.emberjs.com/v2.7.0/object-model/observers/