gpt4 book ai didi

Ember.js:当 Controller 中的属性更改时触发 'Ember.computed.filter' 进行更新

转载 作者:行者123 更新时间:2023-12-01 22:52:45 24 4
gpt4 key购买 nike

我正在尝试根据来自文本输入的输入使用 Ember.computed.filter 过滤 ArrayController 的内容。

App.IndexController = Ember.ArrayController.extend({
filteredPeople: Ember.computed.filter('model', function(person){
var searchFilter = this.get('searchFilter');
var regex = new RegExp(searchFilter, 'i');
return person.firstName.match(regex);
}),
// this is bound to the value of a text input helper
// I'm just pre-filling the value to show that the filtering does work
searchFilter: 'kris'
});

效果很好,过滤效果如预期。但是,我希望它在 searchFilter 的值发生更改时更新(即,任何时候有人输入文本输入)。现在的问题是它仅在对模型本身进行更改或 Controller 首次加载时更新。

searchFilter 更新时,有没有办法触发 Ember.computed.filter 更新?我正在使用 Ember.computed.filter 因为它看起来比普通的计算属性更有效,我相信它每次都会重新创建整个数组(如果我弄错了请告诉我).此外,Ember.compute.filter 易于使用且非常干净!

我使用上述设置创建了一个 JSBin。当用户在文本框中输入内容时,我想以某种方式触发 Ember.computed.filter 进行 self 更新。

http://emberjs.jsbin.com/pitefica/1/edit

感谢您的宝贵时间和任何帮助。

最佳答案

也许太简单了,但是 Ember.computed.filter 支持使用 .property() 的依赖键,所以这会很好地工作:

App.IndexController = Ember.ArrayController.extend({
filteredPeople: Ember.computed.filter('model', function(person){
var searchFilter = this.get('searchFilter');
var regex = new RegExp(searchFilter, 'i');
return person.firstName.match(regex);
}).property('model','searchFilter'),
searchFilter: 'kris' //this is bound to the value of a text input helper
});

jsbin: http://emberjs.jsbin.com/tefes/1/edit

关于Ember.js:当 Controller 中的属性更改时触发 'Ember.computed.filter' 进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23455752/

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