3

我的问题有点笼统。在 ember 中使用 findQuery 的路由和控制器的最佳概念是什么。

我有数据过滤的 api。数据请求由执行

this.store.findQuery('dataModel', {"q": JSON.stringify({"filters": filters})});

之后我在表格视图中显示它们。过滤器由模板中的表单视图更新。

我目前的解决方案:表单视图设置控制器参数和来自控制器的按钮调用动作。控制器动作加载参数,执行findQueryset('content',data)

model: function()在大多数情况下,我在 Route 和 .. 中看到了带有定义setupController: function(controller, model)的概念controller.set('content',model)。我喜欢这个“集合”,因为“内容”是 RecordArray(不是 PromiseArray),我可以轻松地将它用于数据表和其他 JavaScript 插件。我认为我的解决方案不好。

4

1 回答 1

0

我认为您的概念是正确的,我一直在使用以下流程:

在您的路由器中:

App.Router.map(function() {
    this.resource('search', { path: '/query/:filters' });
});
App.SearchRoute = Ember.Route.extend({
    model: function(params) {
       return this.store.findQuery('dataModel', {"q": JSON.stringify({"filters": params.filters})});
});

在您的 html 中,只需绑定将导致新搜索路线的操作,如下所示:

<button {{action "doSearch"}}>Search</button>

在您的控制器中:

App.SearchController = Ember.ArrayController.extend({
...
actions: {
    doSearch: function() {
        var query = buildYourQueryObject();
        this.transitionToRoute("search",  query);
    }
}

单击按钮后,应用程序将转换到您的搜索路径,“查询”将被序列化并发送到 Route,并且 Route.model() 将尝试根据提供的序列化参数填充。

注意:代码已被简化,您可能需要添加更多内容才能使其正常工作

于 2014-01-18T12:04:24.377 回答