1

私はこのガイドに従っています: 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 つの問題があります。

  1. キャンセルをクリックすると、適切なテンプレートが読み込まれ、isEditing が false に変更されますが、編集ボタンは非表示のままです。

  2. 行 @transitionToRoute('post', @content) は未定義のページに移動します。@content はモデルではなく、DS.RecordArray のようです。昨日はうまくいきましたが、他の変更が壊れたようです。

BBLNさん、よろしくお願いします!

4

1 に答える 1

0

問題は解決しました、ありがとうございました。

新しいルート:

App.PostEditRoute = Ember.Route.extend
  needs: ['post']
  setupController: (controller, model) ->
    this.controllerFor("post").set("isEditing", true)
    controller.set('content', this.controllerFor("post").get("content"))

現在、モンゴイドに問題があります:O (誰かが助けたい場合は、作成時に未定義のメソッド `first` :D)

于 2013-07-16T13:40:36.150 に答える