私はこのガイドに従っています: http://emberjs.com/guides/getting-started/toggle-todo-editing-state/
だから私はこのコードを書いた:
App.PostEditController = Ember.ObjectController.extend
headerTitle: 'Editing post'
buttonTitle: 'Edit'
destroy: ->
@content.deleteRecord()
@store.commit()
@transitionToRoute('posts')
save: ->
@content.save().then =>
@transitionToRoute('post', @content)
cancel: ->
console.log("Canceling! " + @content)
if @content.isDirty
@content.rollback()
@transitionToRoute('post', @content)
ポストコントローラー:
App.PostController = Ember.ObjectController.extend
commentsVis: false
isEditing: false
showComments: () ->
this.set("commentsVis", true)
@transitionToRoute('comments', post)
editMode: ->
this.set("isEditing", true)
@transitionToRoute('post.edit')
ルート
EmberJs.PostRoute = Ember.Route.extend
model: (params) ->
App.Post.find(params.post_id)
setupController: (controller, model) ->
controller.set('content', model)
controller.set('isEditing', false)
EmberJs.PostEditRoute = Ember.Route.extend
model: (params) ->
App.Post.find(params.post_id)
setupController: (controller, model) ->
controller.set('content', model)
ビュー:
役職:
<h1>{{title}} / {{parseDate created}} by {{user.email}}</h1>
<p>{{body}}</p>
<div id="discussion">
{{#unless commentsVis}}
<a href="#" {{action 'showComments' this}}>View discussion</a>
{{/unless}}
</div>
{{outlet}}
{{#unless isEditing}}
<button type="submit" {{action 'editMode'}}>
Edit
</button>
{{/unless}}
編集:
<h1>Edit Post</h1>
<form>
<div class="input string">
<label>Title</label>
{{view Ember.TextField valueBinding='title' name='title' viewName='titleField'}}
</div>
<button type="submit" class="button" {{action save}}>
Edit
</button>
<button type="submit" class="button alert" {{action destroy}}>
Delete
</button>
<a href="#" {{action cancel}}>Cancel</a>
</form>
{{outlet}}
2 つの問題があります。
キャンセルをクリックすると、適切なテンプレートが読み込まれ、isEditing が false に変更されますが、編集ボタンは非表示のままです。
行 @transitionToRoute('post', @content) は未定義のページに移動します。@content はモデルではなく、DS.RecordArray のようです。昨日はうまくいきましたが、他の変更が壊れたようです。
BBLNさん、よろしくお願いします!