拥有此控制器:
App.ProductsController = Ember.ArrayController.extend Ember.PaginationMixin,
sortProperties: ["number"]
我想以这种(工作)方式添加“搜索”功能
App.ProductsController = Ember.ArrayController.extend Ember.PaginationMixin,
sortProperties: ["number"]
search: ''
filteredContent: (->
search = @get("search")
@get("content").filter (item)->
name = item.get("name").toLowerCase()
name.match(search.toLowerCase())
).property("submittedSearch")
filterContent: ->
@set "submittedSearch", @get("search")
问题在于,当我应用我的搜索时,我失去了之前定义的排序。我该怎么办?
答案 0 :(得分:1)
来自官方文档
Ember.SortableMixin
提供标准界面 数组代理指定排序顺序并在何时维护此排序 添加,删除或更新对象 而不更改 其基础内容数组的隐式顺序:
Ember.SortableMixin
只关心content
阵列,而我们确实得到了,在这里你试图进入filteredContent
,而mixin并不关心!
所以我建议你将content
作为计算属性,这取决于所选的搜索,如下所示,
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()
现在,您的content
将通过ComputedProperty过滤,排序礼貌为“mixin”