Javascript ember js组件观察器不工作

Javascript ember js组件观察器不工作,javascript,ember.js,observers,Javascript,Ember.js,Observers,我在emberjs组件中有一个场景,观察者不会被击中。我把原因弄清楚了 “设置要观察的组件属性时,组件尚未插入。” 我的问题是,在ember js中能否以更好的方式处理这个问题 更好的解释可以在下面的jsbin中找到 您可以指定.on('init')强制观察器在初始化后立即运行;否则就像提到的@Kingpin2k一样,它们不会运行 App.TextboxDisplayComponent = Ember.Component.extend({ displayText: '',

我在emberjs组件中有一个场景,观察者不会被击中。我把原因弄清楚了 “设置要观察的组件属性时,组件尚未插入。”

我的问题是,在ember js中能否以更好的方式处理这个问题

更好的解释可以在下面的jsbin中找到

您可以指定
.on('init')
强制观察器在初始化后立即运行;否则就像提到的@Kingpin2k一样,它们不会运行

App.TextboxDisplayComponent = Ember.Component.extend({
  displayText: '',        

  boundProperty: '',

  observeBoundProperty: function () {
    this.set('displayText', this.get('boundProperty'));        
  }.observes('boundProperty').on('init')
});

你的(非)工作示例

你在这里到底想要完成什么?在这种情况下,两个观察者函数最好都作为计算属性使用(通过
Ember.computed
)。同意,观察者在这两种情况下都是过火的。正如我在评论中提到的,这只是一个示例,而不是实际的用例。实际的用例是一个巨大的用例,我想把它简化。基本上,观察者中有很多计算,它不仅仅是将其分配给另一个属性,当你说“两个观察者函数最好都作为计算属性使用”时,如果你在组件中使用计算属性,它将不起作用,原因与观察者不起作用的原因相同。你需要问自己的问题是,为什么我要计算一些不会被使用的东西。如果要使用它,为什么我不使用计算属性?@Kingpin2k可能是我没有正确理解你的观点,但我觉得我也解释得不好。所述的示例只是一个示例,而不是我最终使用的实际用例!我在计算正在使用的东西,但我在计算不止一个。因为我计算的不止一个,所以我觉得使用观察者比使用计算属性更好!这正是我想要的。谢谢你,当我尝试这个方法时,我认为观察者只会在“on('init')”上被击中,而不会在通常的变化发生时被击中。现在我对它进行了测试,它甚至在发生变化时也会发生。然而,我刚刚意识到为什么我之前也没有使用这个概念,这是一个陷阱!即使boundProperty未更改,observeBoundProperty也将在init上执行。如果我只想让observer在更改时被点击,那么它不会有多大帮助:)但无论如何,我可以在它里面进行条件检查,最重要的是它是一个更干净的版本!