Angular JS会在应用程序的每个页面上弹出
Angular JS Pop over on every page of the application
我正在做一个Angular 1的web应用,想实现一个弹出窗口,当用户在应用中导航时,它会对地址进行背景检查。
用户单击一个图标,弹出窗口打开,用户输入一些凭据并开始背景检查,而弹出窗口消失。
一旦背景检查完成并且服务器交付结果,弹出窗口就会打开-无论用户在应用程序的哪个页面上导航-并交付结果。
在Angular 1中实现这种逻辑的最佳方式是什么?这应该作为一个组件来完成吗?代码是什么样子的呢?
任何提示和帮助都非常感谢和欢迎
关于这个问题有很多问题,但我会尽力帮助你。
。后台检查API调用
听起来好像用户要请求"背景检查",这将向服务器发出一个AJAX调用。从你的问题中我了解到,响应不会立即返回,而是需要几秒钟或几分钟。
我的方法是每隔几秒钟轮询服务器,看看响应是否准备好了。您需要从客户端到服务器端执行此操作,因为(目前)还没有标准的方法将响应从服务器"推送"到客户端。因此,您正在将背景检查的结果保存在数据库中,并等待客户端检查它是否准备好。
我把一个指令在一些全局页面元素,如标题。该指令每隔X秒发送一个AJAX请求,查看背景检查是否准备好了。使用angular的$timeout
和$http
服务。为了跟踪用户是否请求了背景调查以及他们的用户ID是什么,您可以使用cookie。我以前用过ngCookies,我很喜欢它。
B。Angular中的弹出窗口和模态
我对弹出窗口或模态的基本方法是将全屏<div>
附加到body元素,将其设置为fixed
定位,并给它一个高z-index
。
我发现它有用,使一个模态工厂,以保持跟踪全局模态逻辑。可能还有很多开源的选择,尽管我还没有真正尝试过。
这是我的基本模态工厂:
app.factory('modalFactory', [ '$templateRequest', '$sce', '$compile', function( $templateRequest, $sce, $compile ) {
var modalFactory = {
open: false,
modal: undefined
};
modalFactory.create = function($scope, parent, templateUrl){
$templateRequest(templateUrl).then(function(html) {
modalFactory.modal = angular.element(html);
modalFactory.open = true;
parent.append(modalFactory.modal);
$compile(modalFactory.modal)($scope);
}, function() {
// An error has occurred
});
};
modalFactory.close = function(){
modalFactory.modal.remove();
modalFactory.open = false;
};
return modalFactory;
}])
然后,你可以把它作为一个依赖注入,并从另一个指令中使用它,像这样:
app.directive('openSomeModal', ['modalFactory', function($modal){
return {
link: function($scope, $element){
$element.on('click', function(){
$modal.create($scope, document.body, 'path/to/template.html');
});
}
};
}]);
- 在openshift node js应用程序中获取请求
- 使用CI和CodeDeploy对node.js应用程序进行连续部署
- 如何构建angular.js应用程序
- node.js应用程序中的async.js问题
- 使用connect vhost为多个express.js应用程序提供服务
- 在node.js应用程序中接收JMS消息
- JS应用程序中基于DOM的XSS保护
- Express.js应用程序最大CPU
- Node.js应用程序-由NPM启动时的不同Node_ENV
- 如何将现有的angular js应用程序集成到Laravel 5中
- React js应用程序's在托管应用程序中打开时将覆盖css样式
- angular js应用程序不工作
- 使用Sails.JS为静态HTML/JS应用程序提供身份验证
- 如何计算angular JS应用程序(单页应用程序)的页面加载时间
- 使用Q节点模块时,Bluemix node.js应用程序部署失败
- Heroku类型的简单HTML/JS应用程序托管
- 通过SSL/TLS连接访问Vagrant上的Node.js应用程序
- 在Backbone.js应用程序中使用lodash而不是下划线
- fs.readFileSync()在express js应用程序中失败
- 在Chrome和Safari中启动Angular JS应用程序的差异