gpt4 book ai didi

javascript - 在表单中重置 emberjs 模型

转载 作者:行者123 更新时间:2023-11-29 19:40:41 25 4
gpt4 key购买 nike

我有一个显示帖子列表的路由,还有一个用于创建新帖子的表单。

posts_route.js.coffee:

Fortchan12.PostsRoute = Ember.Route.extend                                                                                   
model: ->
Ember.RSVP.hash
posts: @get('store').findAll 'post'
newPost: @get('store').createRecord 'post'

actions:
create: (post) ->
post.setProperties
name: this.controller.get('name')
body: this.controller.get('body')
photo: this.controller.get('photo')
post.save()

这是 Handlebars 模板:

<h2>make a new post</h2>                                                                                                   
<form {{action 'create' newPost on="submit"}}>
{{#if isSaving}}
<p>saving post...</p>
{{/if}}
<p>{{input type="text" value=name}}</p>
<p>{{textarea value=body}}</p>
<button type="submit">Create</button>
</form>

<h2>posts</h2>
{{#each posts}}
{{name}} says
{{body}}
{{created_at}} {{#link-to 'post' this}}
{{id}} {{/link-to}}
<br />

这似乎工作正常,但我想在提交并保存后清除表单,以便我可以发布另一篇文章。我可以在清除表单的路径中的创建操作中执行此操作(尽管它似乎没有清除文件输入字段):

    self.controller.setProperties({name: '', body: '', photo: ''})                                                     

但这似乎并没有“重置”模型,当我再次提交表单时它试图 PUT 到/posts/:id,而不是 POST 到/posts:

PUT http://0.0.0.0:3000/posts/70 404 (Not Found) 

我不确定我应该做什么,我读过使用 setupController 是一个选项,但我不确定如何像我一样在我的 route 使用多个模型来做到这一点。

最佳答案

您还想创建一条新记录,该页面仍然引用您保存的另一条记录,现在该记录有一个 id,这就是它尝试更新该记录的原因(请原谅javascript)。

actions:                                                                                                                 
create: (post) ->
self = @
post.save().then(function(){
self.set('controller.newPost', self.get('store').createRecord('post'));
});
使用所有的伪代码组合
model: function(){
return Ember.RSVP.hash({
posts: @get('store').findAll 'post',
newPost: @get('store').createRecord 'post'
});
},
setupController: function(controller, model){
controller.set('posts', this.get('store').all('post'));
controller.set('newPost', model.newPost);
}

反向计算属性

在 Controller 上

reverseProperty: function(){
this.get('posts').sortBy('foo').toArray().reverse();
}.property('posts.[]')

关于javascript - 在表单中重置 emberjs 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23209235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com