问题标签 [route-provider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
277 浏览

angularjs - 具有命名组的 AngularJS 路由提供程序停止多个控制器实例

.when('/search/:searchString', {当我通过为每个不同的页面加载时设置一个包含命名组的路由提供程序时:searchString它会加载分配的控制器的新实例。

当我有一个问题时,这会给我带来一个问题,$rootScope.$on('searchUpdated',因为它会对控制器的每个实例上的广播消息做出反应。

有没有办法让它只加载一个控制器并为每个请求使用相同的控制器,如果没有,有没有办法在页面离开时销毁控制器。

0 投票
1 回答
1167 浏览

angularjs - 停止 $locationChangeStart / $routeChangeSuccess 以获取 ajax 调用响应。全局添加resolve

在每次更改路线时,我都需要检查用户是否已登录。如果没有,我需要将用户重定向到登录页面,否则显示该页面。

我有一个 ng-view 的父控制器:

因为我需要检查用户是否登录all the the route changes, I needed to add the check globally.

因此,我尝试在 init 控制器中添加检查,例如:

这种方法的问题在于:

当路由发生变化时,页面加载1-2秒,因为此时还没有收到ajax调用成功,js不等待ajax调用响应。然后,当它被接收到并且失败时,页面将重定向到登录。

此外,我无法添加event.preventdefault()$locationChangeStart 的开头,因为它会在无限循环中发送整个站点。

我需要:

  1. 一些方法可以阻止位置更改,直到没有收到 ajax 调用响应。
  2. 某种方式可以将此检查添加到所有位置更改,而无需手动将解析添加到 app.js 中 routeProvider 中的每个 $route。
0 投票
4 回答
3443 浏览

angularjs - 配置中的角度别名路由没有重定向

我可能只是缺少一些简单的东西,但我想给我的路线起别名。我试图让路由 /hello_world 只转发到 /posttemplate 的现有路由。我希望能够像这样给我的路线起别名,以便为用户提供访问动态链接的简单易记的方式......就像博客中的永久链接一样。此外,这是一个单独的问题,有没有人知道在 json 文件或 xml 中定义所有这些路由的好方法,或者在我添加许多路由时保持干净的东西?

0 投票
3 回答
206 浏览

angularjs - AngularJs - 在不禁用“扩展菜单”的情况下无法取消路线更改

图片: 在此处输入图像描述

的HTML:

展开菜单代码:

一些数据:

路线提供者“否则”这样做:

场景[问题:]

我在收件箱页面上,单击图表菜单,在单击选项之前,我的视图恢复到默认仪表板页面。

我尝试使用 $locationChangeStart 来阻止默认值,但这会阻止菜单扩展,因此我可以看到子菜单。

我想要什么:要留在我单击的任何页面(在本例中为收件箱页面),单击任何其他具有子菜单(例如图形)的菜单项,并且不要让我的视图从当前所在的收件箱视图中移开。

预先感谢

0 投票
0 回答
1166 浏览

javascript - Angular js - $routeProvider - 如何让它在 routeChangeStart 上解决

我正在阅读 Angular 文档$routeProvider,我的参数说:

resolve- {Object.=} - 应注入控制器的可选依赖映射。如果这些依赖项中的任何一个是承诺,路由器将等待它们全部解决或在控制器实例化之前被拒绝。如果所有的 Promise 都成功解决,则注入已解决的 Promise 的值并触发 $routeChangeSuccess 事件。如果任何一个 Promise 被拒绝,该 $routeChangeError事件就会被触发。地图对象是:

key– {string}:要注入控制器的依赖项的名称。factory - {string|function}:如果是字符串,那么它是服务的别名。否则如果是函数,则将其注入并将返回值视为依赖项。如果结果是一个承诺,它会在其值被注入控制器之前被解析。请注意,ngRoute.$routeParams 仍将引用这些解析函数中的先前路由。改为使用 $route.current.params 来访问新的路由参数。

那么有没有办法resolve在 routeProvider whenrouteChangeStart而不是 when routeChangeSuccess

为了解释我的推理 - 我想在 routeChangeStart 上运行解析,因为我正在为我的所有应用程序设置配置参数,并且我希望它们能够尽快访问,而 ChangeSuccess 是稍后的一步。

我的代码其实很简单:

0 投票
1 回答
7174 浏览

angularjs - AngularJS - 模板不起作用

我正在使用 Restangular 创建一个使用 MEAN 堆栈的简单 API。

这是我的代码:

索引.html

应用程序.js

列表.html

编辑.html

服务器.js

我的应用程序的第一页加载得很好。这是屏幕截图。

列表.html

但是,当我单击任一编辑链接时,它应该加载 edit.html 模板。但它在控制台中显示一个没有错误的空白页面。这是屏幕截图。 编辑.html

我无法弄清楚出了什么问题。请帮忙。请询问是否需要任何其他代码。我几乎添加了我所做的一切。我知道这很烦人,不推荐,但我不确定我的代码的哪一部分导致了这个问题。

编辑1:

我最远的猜测是 edit.html 的 url 可能无法正确解析。但我不知道如何测试!任何帮助都会得到帮助。

编辑 2:目录结构

目录结构

解决方案:礼貌@ashu

问题是 index.html 中的这一行

它应该是:

但是,我不清楚为什么!无论哪种方式,页面都包含 app.js。真奇怪。

0 投票
1 回答
166 浏览

angularjs - $routeProvider 没有正确调用

我对在我的应用程序中使用的路由提供程序感到有些困惑。我正在使用 grunt 来丑化这一切,所以我开始怀疑这是否是其中的一部分?

无论如何,一些带有 app.config 的代码示例:

控制器(暂时位于 app.js 中)

在 app.run 我打电话给这个:

哪个在输出

作为一个快速测试,看看 $routeProvider 是否真的被击中,我跑了 (home1)

哪个正确地击中了其他地方并将网址更改为 /default

我可以看到,通过转储路由服务,当前路由设置正确,但是模板(它是空的,虽然经过测试并且没有显示任何内容)和该路由的控制器都没有加载,我什至无法使用加载了不正确的控制器。

对此有什么想法吗?

快速编辑:我也在我的html中使用

0 投票
1 回答
756 浏览

angularjs - AngularJS RouteProvider 和 ExpressJS 发送文件

在我的 Angular 应用程序中,我试图呈现在用户单击链接时加载到索引页面中的部分内容。之前使用以下代码运行良好:

但是当我添加 Express 时,它不起作用:

如果我只想显示索引页,这很好用。但是,当我添加以下代码时,它会显示纯 HTML(部分的),但没有 CSS 或 Javascript。

如何以适用于 Angular 的方式使用 Express 渲染部分?我已经尝试查看 get()、render 和 sendfile 的 Express api,但它们对我的情况并没有太大帮助。其他用户之前在这里问过类似的问题,但他们通常涉及 Express 路由到的另一个文件,我想知道我是否可以在不添加任何额外文件的情况下做到这一点,因为仅添加一个文件来包含 Express 已经是一个问题。

currentFile.html 本身不加载任何 CSS 或 Javascript。在我添加 Express 之前,它是一个在 index.html 中加载的部分,它加载了所有附加内容。

任何帮助表示赞赏。谢谢

0 投票
1 回答
2574 浏览

angularjs - 配置块中 $routeprovider 的茉莉花测试解析

我的模块配置块中有以下内容:

规格文件:

但是,在运行测试时出现以下错误:

我的业力配置包括 angular-route.min.js 文件。任何建议都会有所帮助。

0 投票
0 回答
349 浏览

angularjs - 在angularjs中处理302状态码

在我的应用程序中,我有一个使用 302 将用户重定向到登录视图的身份验证机制。

客户端在 angularjs 中。它使用 $routeProvider 将 url 映射到视图。现在,当我单击链接(绑定到路由提供程序中的视图)并且用户未通过身份验证时,我想重定向到登录屏幕。

但取而代之的是,登录屏幕的内容嵌入在调用页面中。有没有办法在收到 302 状态码时重定向?