EmberJS鼓励我们在任何可能的地方都依赖path,并且很容易使用enter route上的参数来正确地设置控制器。但是,如果您不关心将位置转移给某人,而希望使用复杂的过滤与动态分页相结合,该怎么办呢?我要展示我想出来的东西。这可能是有用的,只要我在我的道路上没有遇到太多相关的指南。
发布于 2014-02-07 18:14:50
首先,我在服务器端做了些什么:
1)我使用的是has_scope,所以查询参数是在url中传递权限的。2)索引动作产生的模板如下:{"actors":..models go here..,"meta":{" total ":10," page ":1}}所以我用json响应传递总页数和当前页面。
以下是路由:
Caster.ActorsIndexRoute = Ember.Route.extend
model: ->
@store.findQuery 'actor',
search: @get('controller.term')
page: @get('controller.page')
actions:
refresh: ->
@model().then (data) =>
@set 'controller.model', data
在这里,我们重复setupController对“刷新”事件所做的事情。此事件将由控制器发送:
Caster.ActorsIndexController = Ember.ArrayController.extend
term: ''
page: 1
terms: ( -> @reload() ).observes('term', 'page')
meta: ( -> @store.metadataFor('actor') ).property('model')
updatePage: ( -> @set 'page', @get('meta.page') ).observes('model')
reload: -> @get('target').send('refresh')
剩下所有工作就是构建分页小部件,该小部件将更改控制器的“page”属性并导致重新加载集合。当'term‘属性改变时,也会发生这种情况。
这里的一个问题是在路由初始化时没有可用的控制器属性,所以第一次你会得到非作用域的集合。
https://stackoverflow.com/questions/21634914
复制