【问题标题】:Ember.js ObserverEmber.js 观察者
【发布时间】:2016-12-28 23:26:13
【问题描述】:

我想在服务中的变量上使用观察者,这是我的代码:

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'));
}),

这就是错误:

处理路由时出错:索引 this.get 不是函数

当我试图在警报中显示进度时:

actions:
    {
        getProgress()
        {
            alert("progress:"+this.get('uploader').get('progress'));
        }
    }

一切正常,但不是在观察者中。我该怎么办?

【问题讨论】:

  • Ember.observer('uploader.progress', ...
  • 成功了!谢谢!
  • 您查看过Ember.observer 的文档吗?
  • 我需要更准确地阅读它:-)

标签: javascript ember.js observers


【解决方案1】:

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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多