如何在 Angular JS 中为“ng-view”做预加载?

2023-12-11

I use <div ng-view></div>在网页上。 当我点击块中的链接时<div>已加载 HTML 模板已设置在routeProvider。还一起完成请求 AJAX,返回加载模板的数据。

现在的问题是,单击后我得到带有空表单的 HTML 模板,但 AJAX 请求仍在工作。几秒钟后,HTML 表单就会从 AJAX 归档数据。

我如何预加载目录页面ng-view?


这里似乎有一些类似的问题:

  • Angularjs 根据 ajax 请求加载屏幕
  • Angular JS 加载屏幕和页面动画.

此外,还有很多模块可以处理加载动画http://ngmodules.org。例如,这些:

  • https://github.com/cgross/angular-busy
  • https://github.com/chieffancypants/angular-loading-bar(我在我的应用程序中使用这个)
  • https://github.com/McNull/angular-block-ui和别的。

UPD: 我根据角度加载栏的工作原理编写了一个简单的解决方案。我没有用 ng-view 测试它,但它似乎可以与 ui-view 一起使用。这不是最终的解决方案,必须进行完善。

angular.module('ui')

.config(['$httpProvider', function($httpProvider) {
    $httpProvider.interceptors.push('LoadingListener');
}])

.factory('LoadingListener', [ '$q', '$rootScope', function($q, $rootScope) {
    var reqsActive = 0;

    function onResponse() {
        reqsActive--;
        if (reqsActive === 0) {
            $rootScope.$broadcast('loading:completed');
        }
    }

    return {
        'request': function(config) {
            if (reqsActive === 0) {
                $rootScope.$broadcast('loading:started');
            }
            reqsActive++;
            return config;
        },
        'response': function(response) {
            if (!response || !response.config) {
                return response;
            }
            onResponse();
            return response;
        },
        'responseError': function(rejection) {
            if (!rejection || !rejection.config) {
                return $q.reject(rejection);
            }
            onResponse();
            return $q.reject(rejection);
        },
        isLoadingActive : function() {
            return reqsActive === 0;
        }
    };
}])

.directive('loadingListener', [ '$rootScope', 'LoadingListener', function($rootScope, LoadingListener) {

    var tpl = '<div class="loading-indicator" style="position: absolute; height: 100%; width: 100%; background-color: #fff; z-index: 1000">Loading...</div>';

    return {
        restrict: 'CA',
        link: function linkFn(scope, elem, attr) {
            var indicator = angular.element(tpl);
            elem.prepend(indicator);

            elem.css('position', 'relative');
            if (!LoadingListener.isLoadingActive()) {
                indicator.css('display', 'none');
            }

            $rootScope.$on('loading:started', function () {
                indicator.css('display', 'block');
            });
            $rootScope.$on('loading:completed', function () {
                indicator.css('display', 'none');
            });
        }
    };
}]);

它可以这样使用:

<section class="content ui-view" loading-listener></section>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Angular JS 中为“ng-view”做预加载? 的相关文章

  • 使用谷歌分析处理带有哈希#的网址

    我正在使用 javascript 客户端 mvc 开发一个 js 单页 Web 应用程序 在本例中为 angular js 我在网站上添加了谷歌分析 但从目前我所看到的 至少是实时的 来看 谷歌没有考虑哈希后的 uri 部分 那就是我有一个
  • 如何将 .env 文件变量传递给 webpack 配置?

    我是 webpack 的新手 几乎完成了所有构建部分 但现在的问题是我想将环境变量从 env 文件传递 到 webpack 配置 以便我可以通过以下方式将该变量传递到我的构建文件webpack DefinePlugin plugin 目前我
  • 在 angularJS 中覆盖模块值/常量的最佳方法

    我用 angularJS 编写了一个模块 封装了所有后端通信 为了获得更大的灵活性 我将 api 前缀作为模块上的常量值 可能是值 因为我没有在配置阶段使用它 所以像 angular module myapp data constant a
  • Angularjs $http 似乎不理解响应中的“Set-Cookie”

    我有一个带有 Passport 模块的 Nodejs Express REST api 用于身份验证 登录方法 GET 在标头中返回一个 cookie 当我从 Chrome 调用它时 它工作正常 我的 cookie 已在我的浏览器中设置 但
  • 为什么 AngularJS 指令(属性等)在 WebStorm 8 中显示为“无效”?

    我几个小时前刚刚安装了 WebStorm 8 我一直在写一些 AngularJS 的东西 但我有一个相当烦人的小问题 AngularJS 插件似乎只能部分工作 每当我输入 ng 时 我都会收到一个智能感知弹出窗口 其中显示所有各种 ng 属
  • 预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 Access-Control-Allow-Origin

    当我尝试加载网页时 出现以下错误 预检响应中的 Access Control Allow Headers 不允许请求标头字段 Access Control Allow Origin 我查看了针对此问题的其他答案 它们表明缺乏 CORS 支持
  • 在控制器之间共享异步数据,无需发出多个请求

    我正在尝试做一个单曲 http请求获取我的 JSON 文件之一并在我的所有控制器中使用该数据 我在 Egghead io 上看到了如何跨多个控制器共享数据 我还阅读了这个 StackOverflow 问题 在 angular js 中的控制
  • Angular 1.5 组件的自定义指令

    我已经升级到 Angular 1 5 现在支持 component helper 方法致力于帮助用户过渡到 AngularJs 2 不幸的是 关于它的教程并不多 我有以下简化的自定义指令和模板 URL 谁能帮我写这个 component 形
  • 离子初始加载时间

    我正在使用 Ionic 构建一个简单的应用程序 但我的应用程序在冷启动时的初始加载时间方面存在性能问题 这是我所做的 collection repeat 代替带有 track by 的 ng repeat 原生滚动 overflow scr
  • 尝试使用 ui-router 让一个子视图调用另一个子视图

    我有两个子视图 一个用于类别 一个用于产品 因此是该类别的产品 我希望用户能够选择一个类别并查看该类别的所有产品 所以我在类别控制器中调用一个函数View单击类别行上的按钮 这是函数 self scope viewSalonProducts
  • 如何使用复选框来过滤 Angular 的结果?

    我正在尝试使用复选框应用过滤器 复选框正确显示 div div
  • Google 使用 Angular JS 放置自动完成功能

    我试图让谷歌地点自动完成与 Angular JS 一起工作 这是jsfiddle http jsfiddle net punchouty cTD2a 2 place change 事件后模型未更新 它正在根据输入的变化进行更新 下面是 ht
  • 通过查询字符串传递“Bearer”时 SignalR 身份验证失败

    我想在 SignalR 中启用身份验证 而服务器托管在 ASP NET WebAPI 中 我使用 OAuth Bearer 身份验证 客户端是 AngularJS 在客户端 我最初通过 HTTP 标头传递 Bearer 令牌 它与 WebA
  • 取消嵌套 ng-click 调用之间的事件传播的最佳方法是什么?

    这是一个例子 假设我想要像很多网站一样有一个图像叠加层 因此 当您单击缩略图时 整个窗口上会出现黑色覆盖层 并且图像的较大版本位于其中的中心 单击黑色覆盖层可将其关闭 单击图像将调用显示下一张图像的函数 html div class ove
  • Angular - UI 路由器 - 状态重入

    如何配置 UI Router 默认重新进入或重新加载状态 例如 用户想要刷新页面 因此他单击该页面后面的链接 但目前该链接不可点击 因为它会转到同一页面并且状态不会改变 使用浏览器按钮刷新确实有效 因此它会再次重新加载整个 SPA 这是不可
  • 角度剑道下拉

    我正在对许多组件使用 Angular kendo ui 但遇到了一个我似乎无法解决的问题 我有以下角度选择 它工作正常并将所选值正确绑定到 ng model
  • ng-repeat 插入空锚标记

    我正在尝试使用角度创建一个菜单 菜单项可以有子项 需要另一个 ng repeat 来打印子导航项 当尝试在第二个 ng repeat 中插入锚标记时 我注意到一些奇怪的行为 小提琴链接 http jsfiddle net npU7t htt
  • 从 HTML 文件输入中删除“所有文件”选项

    我在用
  • 有没有办法用异步数据更新过滤器

    我已经构建了下一个角度过滤器 App filter cur2symbol CurrenciesService function CurrenciesService return function input iso input input
  • 将复杂对象传递给 ui-sref 参数

    我需要这样的构建网址 列表 过滤器 状态 1 过滤器 类型 2 I do link a List a 在参数中传递复杂对象 如果传递简单对象 filter 1 可以 但我需要这个 state state list url list filt

随机推荐

  • MySQL select unique 不起作用

    我有一个数据库 其中有 1 个表 其中包含以下行 id name date 1 Mike 2012 04 21 2 Mike 2012 04 25 3 Jack 2012 03 21 4 Jack 2012 02 12 我只想提取不同的值
  • CSS3 - 动画文本左/中/右对齐

    我有一行 未换行 全角 div 内的文本 是否可以为这个元素设置动画text alignment所以文本移动到给定的一侧 中心 我知道我可以测量宽度并使用relative absolute positioning 但我没有找到直接的解决方案
  • ReferenceError:Jdbc未定义,V8版本问题?

    我的代码已经每天运行 6 个月了 但现在似乎不再运行了 我知道 Google App Script Runtime 更新了 V8https developers google com apps script guides v8 runtim
  • 如何调试 exec() 问题?

    exec 命令在我的服务器上不起作用 它不执行任何操作 我已关闭安全模式 并验证所有控制台命令都正常工作 我已尝试使用绝对路径 我已经检查了应用程序的权限 我需要的所有应用程序都有执行权限 我不知道还能做什么 这是我尝试过的代码的概要 ec
  • 去饱和效果消除了对比度

    我对 javaFx 的 ColorAdjust 效果有一个非常具体的问题 我正在尝试在图像上应用灰度滤镜 我正在使用 ColorAdjust 效果并设置饱和度 这是我正在尝试做的事情的可重复示例 public class App exten
  • JavaScript 默认等待而不是手动等待

    Async await 确实很方便 但我想要与它们相反的行为 我希望函数能够屈服 除非我手动指定它们继续并行运行 而不是其他函数继续运行 除非我手动要求它们等待承诺 例如 这段代码会打印出1 3 2 function wait ms ret
  • 以相同的时间/间隔从视频创建多个缩略图

    我需要使用 ffmpeg 同时从视频创建多个缩略图 例如 12 例如 如果视频时长 60 秒 我需要每 5 秒提取一次屏幕截图 我使用以下命令在第 5 秒内获取帧 ffmpeg ss 5 i video webm frames v 1 s
  • 具有相同 ViewScoped bean 类的多个浏览器选项卡或窗口

    将 Payara Server 4 1 2 174 与 mojarra 2 2 15 结合使用 我有一个简单的命名 Bean 其范围为 javax faces view ViewScoped import java io Serializa
  • PowerShell 字符串匹配和管道字符

    我在 PowerShell 中匹配包含管道字符的字符串时遇到困难 在以下情况下 Match 不应该返回 true gt Debug x86 match Debug x128 True 我尝试转义匹配参数管道字符 但这不会改变意外结果 例如
  • UI 布局初始化错误 PrimeFaces 6.2

    下面的代码可以很好地工作PrimeFaces 6 0 and 6 1 但与6 2当我点击按钮时Validate我看到带有消息的对话框 UI Layout Initialization Error The center pane elemen
  • 我可以为 WPF 中的一系列键创建 KeyBinding 吗?

    Is it possible to define key bindings in WPF for a sequence of key presses like the shortcuts in Visual Studio e g Ctrl
  • 未解析的符号:sql::mysql::get_driver_instance(void)

    我有一个程序 使用 MySQL 连接器与 MySQL 数据库进行通信 该应用程序使用 Visual Studio 2008 运行良好 我试图使用 Visual Studio 2010 构建该应用程序 这就是问题开始的地方 VS 2010 不
  • 从情节提要中检索自定义原型单元高度?

    当使用 动态原型 来指定时UITableView故事板上的内容 有一个 行高 属性可以设置为自定义 实例化单元格时 不考虑此自定义行高 这是有道理的 因为我使用哪个原型单元是由实例化单元时的应用程序代码决定的 在计算布局时实例化所有单元格会
  • ILMerge 问题

    我正在尝试将多个程序集合并为一个程序集 作为 WCF 服务的 代理 程序集 目前 代理的用户需要引用包含数据协定的程序集 并且由于我的继承方案 还需要引用我的域程序集 我想为此使用 ILMerge 特别是 ILMerge Tasks 项目看
  • 在录制过程中按主页按钮时,红色横幅会突然出现并消失

    我在录制过程中遇到一个问题 如果我按主页按钮 我注意到 红旗来得突然又消失 并且 AVAudioRecorder 无法正确创建文件 请帮忙这是什么 是否与网络连接相关 请帮忙 红色横幅 表示您的应用程序当前正在使用麦克风硬件 它由对主录制上
  • 在 C# 控制台应用程序中使用 WCF Royal Mail API

    我正在尝试在 C 控制台应用程序中使用 Royal Mail 运输 API 但我陷入困境 当我调用 API 时 它显示无效请求 这就是我到目前为止所做的 RoyalMailMessage cs class RoyalMailMessage
  • Angular UI-Bootstrap 轮播不起作用

    我想使用 Angular 和 Bootstrap 制作一个轮播 但它根本不起作用 我根本看不到旋转木马 但我看到了 Angular 的括号 换句话说 我的结果是 嗨 name 这些是你的照片 幻灯片 index 1 这是我的index ht
  • iOS 中 UITableView 的多列

    我正在将数据从 MySQL 加载到数组中 并且我想将它们填充到UITableCiew 如何添加多列 在我的例子中为 4 UITableView 我能够加载行数据 但我不明白如何将其分成列 是UICollectionView一个选项 如果是的
  • ScrollView 手势识别器吃掉所有触摸事件

    我有一个UIScrollView我添加了一个单击手势识别器来显示 隐藏一些 UI 覆盖 使用 UITapGestureRecognizer singleTap UITapGestureRecognizer alloc initWithTar
  • 如何在 Angular JS 中为“ng-view”做预加载?

    I use div div 在网页上 当我点击块中的链接时 div 已加载 HTML 模板已设置在routeProvider 还一起完成请求 AJAX 返回加载模板的数据 现在的问题是 单击后我得到带有空表单的 HTML 模板 但 AJAX