如果我理解得很好,你想要的行为正是 Ember.js 能给你带来的。
首先,这是一个非常基本的模板:
<script type="text/x-handlebars">
Here, the template is updated each time this property is updated (equivalent to bound property)
{{App.objectTwo.someProperty}}
</script>
这是javascript。我不知道你是否真的想在这里使用 ObjectController,但你提到它,所以我使用它。ObjectController 充当其content
属性的代理。这意味着 someObjectController.get('count') 将尝试count
从控制器本身获取属性,如果它不存在,则控制器count
从其内容中检索属性。
App = Ember.Application.create();
App.someObjectController = Ember.ObjectController.create();
App.ObjectOne = Em.Object.extend({
id: null,
count: null
});
App.objectOne = App.ObjectOne.create({
id: 1,
count: 42
});
App.someObjectController.set('content', App.objectOne);
App.ObjectTwo = Ember.Object.extend({
id: null,
someProperty: function(){
return App.someObjectController.get('count')+5;
}.property('App.someObjectController.count')
});
App.objectTwo = App.ObjectTwo.create({
id: 1
});
//in 3 seconds the count property is set to 0. You can see the template is updated
Ember.run.later(function(){
App.objectOne.set('count', 0);
},3000);
这是工作的jsfiddle:http: //jsfiddle.net/Sly7/M3727/4/