从计算属性返回承诺

编程入门 行业动态 更新时间:2024-10-23 11:32:36
本文介绍了从计算属性返回承诺的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我意识到有几个与此类似的问题,但是这些答案似乎都无法解决我的问题。我的目标是获取语言的列表,并对其进行过滤,以便我的模板可以显示完整列表的一部分。

I realize there have been several questions similar to this, but none of those answers seems to be resolving my issue. My objective is to take a list of language's, and filter them so that my template can display a subset of the full list.

我首先通过验证自己的计算属性是否正常运行:

I started off by verifying that my computed property is working:

MyController.js

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

然后我在过滤器函数中添加了这是我遇到麻烦的地方:

Then I added in a filter function, but here's where I ran into trouble:

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 方法( emberjs/api/classes /Ember.ArrayProxy.html#method_filter )。过滤器似乎正常工作,但是现在 languagesFiltered 返回一个诺言,而车把无法处理。

I'm attempting to use the Ember.Array.filter method (emberjs/api/classes/Ember.ArrayProxy.html#method_filter). The filter seems to be working correctly, but now languagesFiltered returns a promise, and Handlebars can't handle that.

我尝试了最后一种选择:

I tried one last alternative:

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

和控制台。 log(item)永远不会被调用。所以我的问题是:

And console.log(item) never gets called. So my questions are:

  • 实现我所追求的简单过滤器的最佳方法是什么?
  • 这是一个只读的计算属性,但是在计算属性中处理异步值的最佳实践是什么?

I' m使用Ember 1.7.0-beta4,Ember Data 1.0.0-beta10和ember-cli 0.44。我将升级到Ember 1.7.0,但是有一个小错误会影响应用程序的另一部分,因此我们要等到1.7.1。谢谢您的输入!

I'm using Ember 1.7.0-beta4, Ember Data 1.0.0-beta10, and ember-cli 0.44. I'd upgrade to Ember 1.7.0, but there's a small bug that affects another part of our app, so we're waiting until 1.7.1. Thanks for your input!

推荐答案

您可以尝试返回 PromiseArray 而不只是承诺。

You can try returning a PromiseArray instead of just the promise.

您应该可以执行类似操作。

You should be able to do something like..

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

更多推荐

从计算属性返回承诺

本文发布于:2023-10-25 08:15:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1526427.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:属性

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!