0

说我有模型 custom_route 和用户。要获取属于用户 ajax 请求的路由的数据,看起来像“/users/:user_id/routes”必须发送到服务器。现在..我如何获取 ember-data 来发送这些获取请求?

当我像这样设置与此请求相关的特定路由时:

App.UserCustomRoutesRoute = Em.Route.extend({ model: function() {

        return this.store.find('user_custom_route');      });

...请求只是'/user_custom_route'

我查看了 beta 1 ( https://github.com/emberjs/data/blob/master/TRANSITION.md ) 的过渡备忘单,但它并没有真正帮助我。

4

1 回答 1

0

下面更新

我找到了解决方案,但我不知道这是否真的可行。首先,我使用 findQuery 调用设置路由:

App.UserCustomRoutesRoute = Em.Route.extend({
        model: function() {
            return this.store.find('user_custom_route', {user_id: this.controllerFor('user').get('user_id')});
        }
});

然后我连接到配置 get 请求的适配器方法(findQuery 和 buildUrl)。

App.UserCustomRouteAdapter = DS.RESTAdapter.extend({
        buildURL: function(type, id) {

            return 'users/' + id + '/routes';
        },
        findQuery: function(store, type, query) {
            return this.ajax(this.buildURL(type.typeKey, query.user_id), 'GET');
        }
    });

像这样设置请求的形式为“users/:user_id/routes”。

更新

我不得不改变App.UserCustomRoutesRoute. 大多数时候user_id尚未App.UserController设置何时App.UserCustomRoutesRoute被调用(当用户通过其相关地址('url#/users/:user_id/custom_routes')进入站点时)。所以我必须进行身份验证检查以回复user_id如果在调用相关商店之前成功。

 App.UserCustomRoutesRoute = Em.Route.extend({
        model: function() {
            var self = this;
            console.log('user custom routes route');
            return Em.$.get('loggedIn').then(function(promise) {
                return self.store.find('user_custom_route', {user_id: promise.user_id});
            });
        } 
});
于 2013-10-21T13:28:21.110 回答