我有一个父组件需要对子组件进行验证:
// parent component.js
isValid: computed.and('child1Valid','child2Valid', ...),
child1Valid: null,
child2Valid: null,
...
// parent template
{{ child1
prop1=true
prop2=false
childIsValidated: (mut child1Valid)
}}
因此,父级可以改变其childIsValidated
属性,并且更改应传播到其父级child1Valid
属性。
// child1 component.js
prop1: null,
prop2: null,
childIsValidated: computed.or('prop1','prop2')
据我所知,父母无意中传递(并覆盖)childIsValidated
。我可以以某种方式说childIsValidated
是否被计算并且是父{q} child1Valid
属性的一种别名?
答案 0 :(得分:1)
这是不可能的,因为对象键不能同时是两个不同的函数(computed.or vs computed.alias)。
此外,Ember在通过模板时故意覆盖属性(如果它并不是你的prop1和prop2在子组件中仍然为null)
一些替代解决方案包括将观察者放在prop1和amp; prop2并在更改时设置child1Validated。
或者,当每个道具发生变化时,您可能会将操作传递回组件