SPA 中的灰屏问题(angular Js + Web API)
Grey Screen issue in SPA (angular Js + Web API)
我们正在开发一个应用程序,我们在其中使用 Angularjs + webapi 并制作一个单页应用程序。
我们在应用程序中使用了很少来自 Bootstrap 的模态弹出窗口,但我们面临一个问题
-> 单击模态按钮时,背景会初始化,然后卡在没有模态的状态。我们必须强制刷新浏览器。我们正在将其他文件中的模板拉入模式。
最初是为了关闭模态,我使用了 $(".modal.in").hide();
并且在灰色屏幕上没有 "Stuck" 时关闭很好。
然后稍后初始化模态本身,它开始出现,然后我删除了淡入淡出 class 并从 css 中删除了动画,但没有太大帮助。
确实需要一个有前途的修复。
$.support.transition = (function () {
var thisBody = document.body || document.documentElement
, thisStyle = thisBody.style
, support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.OTransition !== undefined
return support
})()
// set CSS transition event type
if ( $.support.transition ) {
transitionEnd = "TransitionEnd"
if ( $.browser.webkit ) {
transitionEnd = "webkitTransitionEnd"
} else if ( $.browser.mozilla || $.browser.msie ) {
transitionEnd = "transitionend"
} else if ( $.browser.opera ) {
transitionEnd = "oTransitionEnd"
}
}
上面的代码片段在一些论坛中被推荐。
但在 Bootstrap.js Bootstrap v3.2.0 (http://getbootstrap.com)
function transitionEnd() {
var el = document.createElement('bootstrap')
var transEndEventNames = {
WebkitTransition : 'webkitTransitionEnd',
MozTransition : 'transitionend',
OTransition : 'oTransitionEnd otransitionend',
transition : 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return { end: transEndEventNames[name] }
}
}
return false // explicit for ie8 ( ._.)
}
您可以创建一个包含您想要和启动的模板的指令,然后在该指令中使用 with 控制 boostrap 模态。外部通信可以通过多种方式实现,我最喜欢使用指令监视的自定义事件来知道何时隐藏或显示模式,这样您就可以使用指令内部已有的所有 bootstrap 代码。这也可以通过服务来完成,这不是我最喜欢的解决方案,但也可以接受。有关更多想法,请查看 angular-ui 项目和模态服务
我们正在开发一个应用程序,我们在其中使用 Angularjs + webapi 并制作一个单页应用程序。
我们在应用程序中使用了很少来自 Bootstrap 的模态弹出窗口,但我们面临一个问题
-> 单击模态按钮时,背景会初始化,然后卡在没有模态的状态。我们必须强制刷新浏览器。我们正在将其他文件中的模板拉入模式。
最初是为了关闭模态,我使用了 $(".modal.in").hide();
并且在灰色屏幕上没有 "Stuck" 时关闭很好。
然后稍后初始化模态本身,它开始出现,然后我删除了淡入淡出 class 并从 css 中删除了动画,但没有太大帮助。
确实需要一个有前途的修复。
$.support.transition = (function () {
var thisBody = document.body || document.documentElement
, thisStyle = thisBody.style
, support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.OTransition !== undefined
return support
})()
// set CSS transition event type
if ( $.support.transition ) {
transitionEnd = "TransitionEnd"
if ( $.browser.webkit ) {
transitionEnd = "webkitTransitionEnd"
} else if ( $.browser.mozilla || $.browser.msie ) {
transitionEnd = "transitionend"
} else if ( $.browser.opera ) {
transitionEnd = "oTransitionEnd"
}
}
上面的代码片段在一些论坛中被推荐。
但在 Bootstrap.js Bootstrap v3.2.0 (http://getbootstrap.com)
function transitionEnd() {
var el = document.createElement('bootstrap')
var transEndEventNames = {
WebkitTransition : 'webkitTransitionEnd',
MozTransition : 'transitionend',
OTransition : 'oTransitionEnd otransitionend',
transition : 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return { end: transEndEventNames[name] }
}
}
return false // explicit for ie8 ( ._.)
}
您可以创建一个包含您想要和启动的模板的指令,然后在该指令中使用 with 控制 boostrap 模态。外部通信可以通过多种方式实现,我最喜欢使用指令监视的自定义事件来知道何时隐藏或显示模式,这样您就可以使用指令内部已有的所有 bootstrap 代码。这也可以通过服务来完成,这不是我最喜欢的解决方案,但也可以接受。有关更多想法,请查看 angular-ui 项目和模态服务