emberjs rc6과 함께 부트 스트랩을 사용하고 있습니다. 렌더링 도우미를 사용하여 부트 스트랩 모달을 보여주고 싶습니다. 이것은 내가 무슨 짓을 :emberjs 컨트롤러 통신 혼동
avatar.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'). 'inEditModel'설정, 아바타 편집 컨트롤러에서 false, 아바타 컨트롤러의 inEditModel은 변경되지 않습니다. 아바타 컨트롤러의 두 가지 인스턴스가 있는지 궁금합니다. 내가 뭘 잘못 했니? 감사!
답장을 보내 주셔서 감사합니다. 그것이 바인딩 문제인지 나는 모른다. 지금 생각하는 것은 "싱글 톤 컨트롤러에만 필요합니다"라고 생각합니다 : http://discuss.emberjs.com/t/documentation-needs-api-is-it-only-for-singleton-controllers/911/3 제 경우에는 , 나는 사용자 템플릿 내에서 아바타 템플릿을 렌더링합니다 : {{render 'avatar'avatar}} 이것은 아바타 컨트롤러의 인스턴스를 생성했습니다. avatar.hbs avatar/edit.hbs에 {{controller}} 및 {{controllers.avatar}}를 넣었습니다. 그들은 다른 ID를 반환합니다. – xnjiang