我有一个帮助器,它接收元素数组并根据第一个返回其他数组。
{{#each (sorted-strings myStrings) as |string|}}
{{string}}
{{/each}}
Helper的实现可以如下所示:
// app/helpers/sorted-strings.js
import Ember from 'ember';
export function sortedStrings(params/*, hash*/) {
return params[0].sort();
}
export default Ember.Helper.helper(sortedStrings);
该助手工作正常,但如果原始myString
阵列都发生改变的更改不会影响已经呈现的列表。
如何合并ComputedProperty的行为和Helper的结果?
经过大量的努力,我才知道正确的解决方案是声明一个Component而不是Helper。这样,我可以显式声明一个计算属性,该属性观察myStrings数组中的更改:
// app/components/sorted-strings.js
export default Ember.Component.extend({
myStrings: null,
sortedMyStrings: Ember.computed('myStrings', function() {
return this.get('myStrings').sort();
});
});
// app/templates/components/sorted-strings.hbs
{{#each sortedMyStrings as |string|}}
{{string}}
{{/each}}
// template
{{sorted-strings myStrings=myStrings}}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句