Ember 保存记录后更新父路由模型
Ember update parent route's model after save record
我正在开发一个 Ember 应用程序,目的是学习。我设置了一个 UI,其中父路由和模板在首次打开时具有 table,例如,左侧列中的今天的项目,以及右侧变化的区域:详细信息关于项目、new/edit 项目的表单、搜索等
我 运行 遇到的麻烦是,当我保存一个新项目时,来自父路由的左手 table 没有用新项目更新。无法找到刷新该路线的方法。我来的壁橱是在模型上使用pushObject
事物模板:
{{partial "things/table"}}
{{outlet}}
router.coffee
@resource "items", ->
@route "item", {path: "/:item_id"}
@route "new", {path: "/new"}
物品路线:
ItemsRoute = Ember.Route.extend(
model: -> @store.find 'item'
)
项新路线:
ItemsNewRoute = Ember.Route.extend
renderTemplate: ->
this.render('items/form')
model: ->
@store.createRecord('item')
setupController: (controller, model)->
controller.set('model', model)
项新控制器:
ItemsNewController = Ember.ObjectController.extend(
needs: 'items'
actions:
submit: -> @model.save().then(console.log('saved'(, console.log('failed'))
cancel: -> @transitionTo('items')
transitionAfterSave: (->
if @get('content.id')
@transitionToRoute('items.item', @get('content'))
).observes('content.id')
submit: -> @model.save().then(this.didSave.bind(this), console.log('failed'));
didSave: function() {
console.log('saved');
var route = this.container.lookup("route:items.index"); // use the name of route you want to refresh
route.refresh();
}
我正在开发一个 Ember 应用程序,目的是学习。我设置了一个 UI,其中父路由和模板在首次打开时具有 table,例如,左侧列中的今天的项目,以及右侧变化的区域:详细信息关于项目、new/edit 项目的表单、搜索等
我 运行 遇到的麻烦是,当我保存一个新项目时,来自父路由的左手 table 没有用新项目更新。无法找到刷新该路线的方法。我来的壁橱是在模型上使用pushObject
事物模板:
{{partial "things/table"}}
{{outlet}}
router.coffee
@resource "items", ->
@route "item", {path: "/:item_id"}
@route "new", {path: "/new"}
物品路线:
ItemsRoute = Ember.Route.extend(
model: -> @store.find 'item'
)
项新路线:
ItemsNewRoute = Ember.Route.extend
renderTemplate: ->
this.render('items/form')
model: ->
@store.createRecord('item')
setupController: (controller, model)->
controller.set('model', model)
项新控制器:
ItemsNewController = Ember.ObjectController.extend(
needs: 'items'
actions:
submit: -> @model.save().then(console.log('saved'(, console.log('failed'))
cancel: -> @transitionTo('items')
transitionAfterSave: (->
if @get('content.id')
@transitionToRoute('items.item', @get('content'))
).observes('content.id')
submit: -> @model.save().then(this.didSave.bind(this), console.log('failed'));
didSave: function() {
console.log('saved');
var route = this.container.lookup("route:items.index"); // use the name of route you want to refresh
route.refresh();
}