gpt4 book ai didi

ember.js - 如何定义一个作用于 Ember.ArrayController 的 itemController 的 Ember.computed 助手?

转载 作者:行者123 更新时间:2023-12-01 02:18:47 25 4
gpt4 key购买 nike

我最近爱上了 Ember.computed 助手。尤其是像 computed.mapBy 这样的 reduce 计算。 .

content 一起使用时效果很好像这样的 ArrayController。

App.People = Ember.ArrayController.extend({
//"content" is an array of App.Person objects.
chosen: Ember.computed.filterBy('content', 'isChosen', true)
})

所以让我们说 isChosen属性不属于 person模型。

然后我可以定义 itemController并像这样创建一个计算属性。
App.PeopleController = Ember.ArrayController.extend({
itemController: 'person',

chosen: function() {
return this.filterBy('isChosen', true)
}.property('@each.isChosen')

});

App.PersonController = Ember.ObjectController.extend({
isChosen: false
});

这行得通, chosen计算属性返回一个基于 personController.isChosen 的数组属性(property)。

但这效率不高,因为每次 child 更改时它都会运行整个 filterBy 函数。在哪里作为 Em.computed.filterBy助手根据需要添加和删除单个对象。

有谁知道如何定义一个作用于 Ember.ArrayController 的 itemController 的 Ember.computed 助手?

最佳答案

您可以使用 @this作为 dependentKey绑定(bind)到 itemControllers 数组。

App.PeopleController = Ember.ArrayController.extend({
itemController: 'person',

chosen: Ember.computed.filterBy('@this', 'isChosen', true)

});

App.PersonController = Ember.ObjectController.extend({
isChosen: false
});

很酷。感谢 David Hamilton 在 sf ember meetup 上的演讲.

关于ember.js - 如何定义一个作用于 Ember.ArrayController 的 itemController 的 Ember.computed 助手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22237007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com