Jos*_*ick 4 ember.js ember-data
我意识到有几个类似的问题,但这些答案似乎都没有解决我的问题.我的目标是获取一个列表language,并过滤它们,以便我的模板可以显示完整列表的子集.
我开始验证我的计算属性是否正常工作:
MyController.js
// Works as expected
languagesFiltered: function() {
return this.get('languages');
}.property('languages')
Run Code Online (Sandbox Code Playgroud)
然后我添加了一个过滤功能,但这里遇到了麻烦:
MyController.js
languagesFiltered: function() {
// console.log shows that languages is actually a promise
var languages = this.get('languages');
// all of this returns a promise, but Handlebars can't handle the promise
return languages.then( function( languagesArray ) {
return languagesArray.filter( function( item, index, enumerable) {
return item.get('name') !== 'English';
});
})
}.property('languages')
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用该Ember.Array.filter方法(http://emberjs.com/api/classes/Ember.ArrayProxy.html#method_filter).过滤器似乎工作正常,但现在languagesFiltered返回一个promise,Handlebars无法处理.
我尝试了最后一种选择:
MyController.js
languagesFiltered: function() {
var languages = this.get('languages');
// "return languages;" works
// But "return languages.filter" returns an empty array
return languages.filter( function( item, index, enumerable ) {
console.log(item);
return true;
});
}.property('languages')
Run Code Online (Sandbox Code Playgroud)
而console.log(item)不会被调用.所以我的问题是:
我使用的是Ember 1.7.0-beta4,Ember Data 1.0.0-beta10和ember-cli 0.44.我升级到Ember 1.7.0,但是有一个小错误会影响我们应用的另一部分,所以我们要等到1.7.1.感谢您的输入!
tik*_*zky 17
您可以尝试返回PromiseArray而不仅仅是承诺.
你应该可以做一些像......
languagesFiltered: function() {
// all of this returns a promise, but Handlebars can't handle the promise
var promise = this.get('languages').then( function( languagesArray ) {
return languagesArray.filter( function( item, index, enumerable) {
return item.get('name') !== 'English';
});
})
return DS.PromiseArray.create({
promise: promise
});
}.property('languages')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2552 次 |
| 最近记录: |