我在我的控制器中有一个动作来创建一个新的page
,这是我的模特之一。
之后,我想清除表单并转换到新的page
。
这是我的代码:
App.ApplicationController = Ember.ObjectController.extend
newSlug: (->
# some function
).property('newTitle')
newMenuName: # some property
actions:
addNewPage: ->
# Get the site
site = @get('model')
# Get all the pages associated with the site
pages = site.get('pages')
# ...
# snipped a bunch out to save space
# ...
# Create a new page passing in our title, slug and menu_name
page = pages.createRecord({title: title, slug: slug, menu_name: menu_name, menu_1: menu_1, menu_2: menu_2, menu_1_order: menu_1_order, menu_2_order: menu_2_order})
page.save().then(onSuccess, onError)
onSuccess = (page) ->
page = this.store.find('page', slug)
console.log('Slug: ' + slug + ' ' + page.slug)
@set('newTitle', '')
@set('newSlug', '')
@set('newMenuName', '')
$('#addPageModal').foundation('reveal', 'close')
@transitionToRoute('page', page)
但我收到this
没有方法set
的错误。我甚至尝试使用self = this
,但它给了我同样的错误。
有什么想法吗?
顺便说一下,如果你想知道,在onSuccess
内,page
没有定义,所以我必须再查一遍。我认为承诺应该返回从API发回的数据。
编辑:
我必须看起来像一个完全愚蠢的人,但是再一次,在这里发布一个问题之后,我自己找到(部分)答案。原来是在CoffeeScript中(到目前为止我并不是它与Ember.js的忠实粉丝)我需要=>
所以我的回调函数变为:
onSuccess = (page) =>
page = this.store.find('page', slug)
console.log('Slug: ' + slug + ' ' + page.slug)
@set('newTitle', '')
@set('newSlug', '')
@set('newMenuName', '')
$('#addPageModal').foundation('reveal', 'close')
@transitionToRoute('page', page)
但是,page
仍未定义。不知道该怎么办。
编辑: 而正确的答案是....
App.ApplicationController = Ember.ObjectController.extend
newSlug: (->
# some function
).property('newTitle')
newMenuName: # some property
actions:
addNewPage: ->
# Get the site
site = @get('model')
# Get all the pages associated with the site
pages = site.get('pages')
# ...
# snipped a bunch out to save space
# ...
onSuccess = (page) ->
@set('newTitle', '')
@set('newSlug', '')
@set('newMenuName', '')
$('#addPageModal').foundation('reveal', 'close')
@transitionToRoute('page', page.get('slug'))
# And just for completeness
onError = (page) =>
# Do something
# Create a new page passing in our title, slug, menu_name, etc.
page = pages.createRecord({title: title, slug: slug, menu_name: menu_name, menu_1: menu_1, menu_2: menu_2, menu_1_order: menu_1_order, menu_2_order: menu_2_order})
page.save().then(onSuccess, onError)