Мое приложение ember должно открывать окно (через внешний JS API), и соответствующая инструкция API должна вызываться действием контроллера, поскольку затем оно должно перейти на другой маршрут.
Моя проблема в том, что при запуске действия окно не открывается. Он будет открыт только из кода, непосредственно связанного с доверенное событие, т. е. клик пользователя.
Итак, если отказаться от Ember и отладить с помощью jQuery и предположить, что инструкция window.open()
находится в MyLib.login()
, этот код A работает:
$('#mybutton').click(() ->
MyLib.login()
)
но этот код B не делает:
$.myNamespace = {
myLoginFunction: () ->
MyLib.login()
}
$('#mybutton').click(() ->
$.myNamespace.myLoginFunction()
)
и действие ember также не будет работать, генерируя тот же код, что и B, который после отладки заключается в том, что window.open()
вернет неопределенный объект.
Мои вопросы:
- Можно ли заставить код B работать? (что имело бы большой смысл по причинам факторизации)
- Есть ли способ, которым действие Ember также может работать?
PS: для большей прозрачности библиотека, о которой я говорю, — это Deezer JavaScript SDK.
PPS: простите мой CoffeeScript
$('#mybutton').click($.myNamespace.myLoginFunction)
- person Mateusz Nowak   schedule 10.11.2014