gpt4 book ai didi

ember.js - 从计算属性返回 promise

转载 作者:行者123 更新时间:2023-12-02 05:15:25 24 4
gpt4 key购买 nike

我意识到有几个与此类似的问题,但这些答案似乎都没有解决我的问题。我的目标是获取 language 的列表's,并过滤它们,以便我的模板可以显示完整列表的子集。

我首先验证我的计算属性是否正常工作:

MyController.js

// Works as expected
languagesFiltered: function() {
return this.get('languages');
}.property('languages')

然后我添加了一个过滤器功能,但在这里我遇到了麻烦:

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')

我正在尝试使用 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')

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。感谢您的输入!

    最佳答案

    您可以尝试返回 PromiseArray 而不仅仅是 promise 。

    你应该能够做类似的事情..

    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')

    关于ember.js - 从计算属性返回 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917778/

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