javascript - Ember.js 连续计算属性的正确语法

标签 javascript ember.js

我的 Controller 中有以下代码。它首先根据搜索属性过滤一组结果,然后对结果进行排序。

results: function() {

    var searchTerm = this.get('searchTerm'),
        results = this.get('content');

    if (searchTerm) {
      results = results.filter(function(item) {
        return item.get('name').toLowerCase().indexOf(searchTerm.toLowerCase()) > -1;
      });
    }

  }.property('content', 'searchTerm', ),

sortedResults: Ember.computed.sort('results', 'sortProperties'),
    
sortProperties: function() {
    var order = this.get('ordering');
    if (order === 0) {
      return ['name:asc'];
    } else if (order === 1) {
      return ['name:desc'];
    }
  }.property('ordering'),

模板循环排序结果:

{{#each sortedResults as |job|}}
    {{job-table-row model=job}}	
{{/each}}

以上效果很好。我想最终将排序结果服从切片函数以显示有限数量的结果。我尝试过以下方法:

slicedResults: function() {
    var sortedResults    = this.get('sortedResults');
    return sortedResults.slice(0,10);
}.property('sortedResults'),

然后循环 slicedResults:

{{#each slicedResults as |job|}}
    {{job-table-row model=job}} 
{{/each}}

在这种情况下,不会返回任何结果。在切片函数中使用排序结果然后将结果输出到模板的正确方法是什么?

最佳答案

我们使用array.[]计算属性的一种更高效的方式。

slicedResults: function() {
    var sortedResults    = this.get('sortedResults');
    return sortedResults.slice(0,10);
}.property('sortedResults.[]')

这真的很有帮助blog post关于数组计算属性之间的差异。

关于javascript - Ember.js 连续计算属性的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32246264/

相关文章:

ember.js - ember init 'Yndh'的意思

ember.js - Socket.IO 与 Ember 和 Ember-Data

ember.js - 控制台登录 ember js

javascript - 如何以原始质量从 Canvas 上的 URL 绘制图像

javascript - 如何从全局范围中切断函数

ember.js - Ember js @each 深一层,但我有两层深的关系

node.js - Ember-CLI/Node - node_modules/bower_components 和不可访问互联网的服务器

javascript - 在 Laravel 10 上不可能使用scrollIntoView和scrollTo

javascript - HTML 文本输入 * "value";在不同的文本输入中显示

javascript - 使php文件中的图像链接在新窗口中打开