Ember继承组件中如何扩展父类计算属性items?
在Ember子组件中扩展父组件的计算属性items
当然可以实现!在Ember的组件继承体系里,子组件可以通过this._super()调用父类中同名的计算属性方法,拿到父组件返回的原始数组,再将额外元素合并进去即可。
下面是调整后的完整示例代码:
// 父组件 Parent Parent: Ember.Component.extend({ items: Ember.computed(function() { return ['a', 'b']; }) }) // 子组件 Child Child: Parent.extend({ items: Ember.computed(function() { // 调用父类的items计算属性,获取原始数组 const parentItems = this._super(); // 合并额外元素,返回新数组 return parentItems.concat(['c', 'd']); // 你也可以用ES6扩展运算符写法:return [...parentItems, 'c', 'd']; }) })
关键说明:
this._super():这是Ember继承体系里的核心方法,用于调用父类中同名的方法(这里就是父组件的items计算属性函数),从而拿到父组件返回的['a', 'b']数组。- 合并数组的方式:你可以用
concat()方法(它会返回一个新数组,不会修改原父组件的数组),也可以用ES6的扩展运算符[...parentItems, 'c', 'd'],两种方式都能安全地生成包含父元素和新元素的数组。
如果你的父组件items计算属性是依赖其他属性的(比如带有依赖键,像Ember.computed('someProperty', function() { ... })),那么子组件的items计算属性最好也同步声明对应的依赖键,确保数据更新时能重新计算。
内容的提问来源于stack exchange,提问作者user3921420
相关产品推荐
相关产品推荐

