将Computed Property-like Binding传递给Ember.Object.create

时间:2017-09-08 03:51:30

标签: ember.js

所以我试图模仿组件如何进行单向绑定,但是让它们像Computed Properties一样工作。你会怎么做:

Parent = Ember.Object.extend({
  color: 'red',
  init: function() {
     this.set('child', Child.create({ parent: this, color: Ember.computed.alias('parent.color') }));
  }
});
Child = Ember.Object.extend({});

parent = Parent.create();

// returns AliasedProperty {altKey: "parent.color", _dependentKeys: Array(1)}...
// I want 'red' instead
parent.get('child.color');

所以我知道bindings are depreciated, 但我找不到Ember 1.10.1的另一种方法。另外,they are asynchronous,我不想要。

我这样做的原因是在Ember.Object之间设置数据向下动作模式,所以我不希望Child知道什么是#{1}}发生在Parent。有了这个功能,我可以创建两个具有不同绑定的Child实例。

因此,我想在create上定义binding / computed属性。换句话说,将父级的属性传递给子级,但在创建时绑定。

有人有想法吗?

1 个答案:

答案 0 :(得分:0)

只需将color: Ember.computed.alias('parent.color')传递给.extend

Child = Ember.Object.extend({
  color: Ember.computed.alias('parent.color')
});

稍后只在调用.create时设置父级:

this.set('child', Child.create({ parent: this }));

它将按预期工作。