Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ember.js:合并搜索和筛选_Ember.js - Fatal编程技术网

ember.js:合并搜索和筛选

ember.js:合并搜索和筛选,ember.js,Ember.js,具有此控制器: App.ProductsController = Ember.ArrayController.extend Ember.PaginationMixin, sortProperties: ["number"] 我想以这种(工作)方式添加“搜索”功能 问题是,当我应用搜索时,我丢失了以前定义的排序。我能做什么?来自官方文档 Ember.SortableMixin为 数组代理指定排序顺序,并在 添加、删除或更新对象而不更改 其基础内容数组的隐式顺序: Ember.Sortable

具有此控制器:

App.ProductsController = Ember.ArrayController.extend Ember.PaginationMixin,
  sortProperties: ["number"]
我想以这种(工作)方式添加“搜索”功能

问题是,当我应用搜索时,我丢失了以前定义的排序。我能做什么?

来自官方文档

Ember.SortableMixin
为 数组代理指定排序顺序,并在 添加、删除或更新对象而不更改 其基础内容数组的隐式顺序:

Ember.SortableMixin
只关心
内容
数组,而我们确实得到了,在这里,您试图得到mixin没有的
过滤内容
;我不在乎

因此,我建议您将
内容
作为计算属性,它取决于所选搜索,如下所示

App.ProductsController = Ember.ArrayController.extend Ember.PaginationMixin,
  sortProperties: ["number"]
  search: ''
  content: (->
    search = @get("search")
    @get('products').filter (item) ->
      name = item.get("name").toLowerCase()
      name.match(search.toLowerCase())
  ).property('submittedSearch')
在路由内
setupController
将主列表设置为
products
控制器的属性,而不是
content

App.ProductsRoute = Ember.Route.extend
  setupControllers: (controller, model) ->
    controller.set('products'), App.Products.find()

现在,您的
内容将被过滤,并按“mixin”排序

丢失了什么的顺序?您使用的是哪个版本的余烬?@Unspecified丢失了我的排序顺序。只有一个小问题:对
submittedSearch
变量的任何更改都不会触发
内容的重新计算。应用于另一个变量的代码不会触发。您对内容做了什么?我的意思是在UI上显示列表,或者你的用例是什么?我只是以通常的方式列出内容:
{{{{each controller}}{{this.name}{{/each}}
你能想出一个JSFIDLE吗?,这样我就可以准确地看到出了什么问题,很难解释这个方法小提琴在咖啡脚本中,顺便问一下,你的问题解决了吗?
App.ProductsRoute = Ember.Route.extend
  setupControllers: (controller, model) ->
    controller.set('products'), App.Products.find()