ember.js中出现浏览器刷新(F5)错误



我的作品:Rails4+Ember.js(1.0.0).

问题:

当我从'#/posts'中linkTo'#/posts/1'时,这没关系。

但是,如果我在"#/posts/1"路由中刷新(F5),浏览器将加载"#/pposts"路由,而不是我想要的"#/pists/1"。

为什么?有什么原因吗?

在router.js.coffee:

App.Router.map ()->
@resource 'posts', ()->
@route 'new'
@route 'edit', {path: '/:post_id'}

路线:

App.PostsEditRoute = Ember.Route.extend({
model: (params)->
return App.Post.find(params.post_id)
})

控制器:

App.PostsEditController = Ember.ObjectController.extend({
actions: {
update: ()->
// $('button[name=update]').find('.btn-load').addClass('active')
@get('content.transaction').commit()
}
})

谢谢,新年快乐,

已更新

@主销2k

DAtrs.Store = DS.Store.extend
revision: 13,
adapter: 'DS.RESTAdapter'

、和

gem 'ember-rails'
gem 'ember-source', '1.0.0'
gem 'handlebars_assets', '~> 0.14.1'
gem 'emblem-rails'

@steve-h

是的!理论上你是对的。

我将"编辑"更改为"发布">

我在PostIndexRoute中用console.log进行了测试。它以前没有被调用,但您的答案是@resource

谢谢!

但是,刷新问题仍然存在。

而且,它产生了一个新的问题。当ilinkTo路由/posts/:post_id时,它不显示信息,而是显示之前的信息。(你的回答说明了这一点)

因为那时,我在browswer看到了控制台。它接受了一个'/posts.json'的请求,而不是'/posts/1.json'。为什么?

你对ember数据和DS.RESTAdapter.有什么理解

路线:

App.PostIndexRoute = Ember.Route.extend({
model: (params)->
console.log '...PostIndexRoute......'
return App.Post.find(params.post_id)
})

我确认了"/posts/1.json",它起作用了:

{
"post": {
"title": "Hello World",
"id": 1
}
}

对不起,谢谢!

更新-2

因为那时,我在browswer看到了控制台。它接受了一个'/posts.json'的请求,而不是'/posts/1.json'。为什么?

意思是:

当ilinkTo是路由/posts/:post_id时,它不显示信息。

但在控制台中:

...PostIndexRoute......
XHR finished loading: "/posts".

我不知道为什么它没有"/posts/1"?

当我这次刷新浏览器时,它会重定向到"/#/posts"。

您的路由器设置似乎是个问题。尝试:

App.Router.map ()->
@resource 'posts', ()->
@route 'new'
@resource 'edit', {path: '/:post_id'}

{{link-to}}时,直接传递模型对象,并且不会调用路由上的model:函数。当您刷新时,您正在重建给定id的模型。指定resource作为编辑路径将使Ember使用您的PostsEditRoute

最新更新