Я использую bootstrap с emberjs rc6. Я хочу показать bootstrap modal с помощью помощника render. Это то, что я сделал: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'). Set 'inEditModel', false в редакторе редактирования аватара, inEditModel в диспетчере аватаров не изменяется. Интересно, есть ли у меня два разных экземпляра диспетчера аватаров. Что я сделал не так? Благодаря!
Спасибо за ваш ответ! Я не знаю, является ли это обязательной проблемой. Теперь я думаю, что «нужно работать только для одноэлементных контроллеров»: http://discuss.emberjs.com/t/documentation-needs-api-is-it-only-for-singleton-controllers/911/3 В моем случае , Я создаю шаблон аватара внутри шаблона пользователя: {{render 'avatar' avatar}} Это создало экземпляр диспетчера аватаров. Я положил {{controller}} и {{controllers.avatar}} в avatar.hbs avatar/edit.hbs Они возвращают разные id. – xnjiang