0

emberjs rc6 でブートストラップを使用しています。レンダー ヘルパーを使用してブートストラップ モーダルを表示したい。これは私がしたことです:

アバター.hbs:

<aside class='avatar-aside'>
  **{{#if inEditModel}}
    {{render 'avatar/edit' model}}
  {{/if}}**
</aside>

<div class='avatar-inner'>
  {{#if canManage}}
    <a class='lnk-edit' href='#' **{{action 'edit'}}**>
      <img class='image-medium' {{bindAttr src='imageMediumPath'}}>
      <span class='bar-edit'><i class='icon-edit'></i></span>
    </a>
  {{else}}
    <img class='image-medium'
         {{bindAttr src='imageMediumPath'
                    alt='controllers.user.basicinfo.nickname'}}>
  {{/if}}
</div>

avatar_controller.js.coffee

Yu.AvatarController = Em.ObjectController.extend
  inEditModel: false

  edit: ->
    @set 'inEditModel', true

アバター/edit_view.js.coffee

Yu.AvatarEditView = Em.View.extend
  tagName:    'section'
  classNames: 'avatar-edit modal fade'.w()

  didInsertElement: ->
    @$().modal
      backdrop: 'static'
      keyboard: false

  willDestroyElement: ->
    @$().modal 'hide'

アバター/edit_controller.js.coffee

Yu.AvatarEditController = Em.ObjectController.extend
  needs: 'avatar flashEmbeded'.w()

  close: ->
    @get('controllers.avatar').set 'inEditModel', false

  cancel: ->
    @get('controllers.avatar').set 'inEditModel', false

  update: ->
    userId  =  @get 'userId'

    Yu.Avatar.
      update(userId).

      done((response) =>
        @get('controllers.avatar').set 'inEditModel', false
      ).

      fail((response) =>
        errormsg = $.parseJSON(response.responseText).errors[0]
        @get('controllers.flashEmbeded').notify 'errormsg', errormsg
      )

ご覧のとおり、アバター コントローラーの inEditModel のスイッチで、アバター/編集テンプレートを表示または非表示にしたいと考えています。今のところ、@get('controllers.avatar').set 'inEditModel', false in avatar edit controller, inEditModel in avatar controller を実行すると、私が知っていることは変わりません。アバター コントローラーの 2 つの異なるインスタンスを取得したのだろうか。私は何を間違えましたか?ありがとう!

4

1 に答える 1