Ember js:创建一个可由每个控制器观察到的全局对象

时间:2014-08-19 11:15:12

标签: ember.js

有没有办法实现这样的事情?像这样的对象:

App.myGlobalObject = {
    key: value,
    key2: {
        key3: value3,
        key4: value4
    }
}

当更新key4时,会在所观察到的任何地方触发事件。

(奖金问题:如何观察?)


修改


我的第一个领导:

1 /建立一个基因"关键"对象:

Key = Ember.Object.extend( {
    value: null,
    valueChange: function () {
        console.log( arguments );
    }.observes( 'value' ).on( 'change' )
} );

2 /创建此对象的实例

test = Key.create( {
    value: null
} );

3 /好,它有效,当我尝试test.set('value', 'test')时,会触发观察者。

4 /现在,如何在控制器或视图中观察它?

1 个答案:

答案 0 :(得分:1)

你几乎在那里,只需将它分配给全局命名空间(大写),然后你就可以看到放置完全限定的路径:

App.GlobalObj = Em.Object.create({
  foo:'asdf'
});


App.IndexController = Em.Controller.extend({
  basedOnFoo: function(){
    return App.GlobalObj.get('foo') + 'modified';
  }.property('App.GlobalObj.foo')
});

示例:http://emberjs.jsbin.com/xeteb/1/edit