Ember传输到URL不起作用

Ember Transion-to URL not working

本文关键字:不起作用 URL 传输 Ember      更新时间:2023-09-26

我有一个成员操作,它使用jquery post提交表单,比如

 submit : function(){   //submitting new story
        this.set('onsubmit' , true);
        var self = this;
        $.post( "/api/post", { some post data })
            .done(function(data) {
               self.transitionTo('post' + data);
            });
        }

网址如下,域名example.com.Post位于example.com/api/Post。发布后,用户必须重定向到example.com/Post/3432232(发布数据返回的一些值)。

然而,在将此转换发布到"example.com/api/post/5000203"之后,而不是example.com/post/23423234。

它不存在,给出404。如何使用ember中的函数转换让用户返回example.com/post/23243234?

编辑-路线如下

App.Router.map(function() {    
this.resource('index', {path : '/'} , function() { 
    this.resource('p', function(){
        this.resource('post', { path: ':post_id' });
    });
});
});

感谢

在Ember路由系统中,transitionTo将路由的名称和路由的模型作为参数(相同的模型,当调用Ember.route.model钩子时,该路由返回)。Ember的词汇表中有两种类型的路由器转换:URL转换(发生在客户端处理新URL时,例如,当您从头开始打开页面时)和"命名转换"(发生在调用this.tranisionTo时)。

Route试图在处理"URL转换"时基于params列表(例如:post_id)加载模型。另一方面,当它处理"命名转换"时,它不调用模型钩子,而是使用已经提供的模型(this.tranisition('post', PostModel)`)。文档。

因此,如果您手头有post_id,只需调用this.store.find('post',postId)即可获得PostModel,并将请求的模型提供给PostRoute:this.transitionTo('post', this.store.find('post', data)

附言:请考虑阅读这个问题和答案,以获得真正嵌套的路由结构:嵌套URL:路由转换问题。

p.p.S.我查看了Ember的文档,发现了transitionTo方法的新签名(至少对我来说):http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo.根据这个文档,您可以重写您的示例以使其工作:this.tranisitionTo('post', data),其中data是post_id。