观察儿童视图的属性

时间:2013-02-01 06:49:27

标签: ember.js

我正在尝试找出在Ember中观察另一个视图实例上的属性的最佳方法。目前我有以下代码似乎无法正常工作。看看文档,我似乎无法找到关于观察者是否只能为自己工作的任何内容。

App = Ember.Application.create();

App.ApplicationView = Ember.View.extend({
  myProperty: false,
  observerFiredCount: 0,

  testObserver: function() {
    var count = this.get('observerFiredCount');
    this.set('observerFiredCount', count + 1);
  }.observes('myProperty'),

  buttonClick: function(event) {
    if(this.get('myProperty')) {
      this.set('myProperty', false);
    } else {
      this.set('myProperty', true);
    }
  },

  willInsertElement: function() {
    var button = this.$('a');
    button.click($.proxy(this.buttonClick, this));
  }
});

App.TestObserverView = Ember.View.extend({
  testObserverAcrossViews: function() {
    console.log('hello world');
  }.observes('App.ApplicationView.myProperty')
});

我想这里有两个问题会对你有所帮助。

1。是否可以在另一个对象实例上观察属性。

2。我用什么路径来访问子视图实例?

非常感谢任何反馈。我觉得好像有一种更清洁的方法可以做到这一点:)

1 个答案:

答案 0 :(得分:1)

你所有问题的答案都是你从错误的角度来解决问题。意见被摧毁。他们是短暂的。它们在全球不存在。你需要一个控制器。控制器是长寿的,意味着必须受到约束。您应该观察控制器,而不是尝试观察视图。

因此,当视图上发生click事件时,请在控制器上设置属性。应用程序的其他部分可以绑定到控制器上的该属性。