问题标签 [angular-ui-router-extras]
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.
angularjs - UI 路由器解析 - 在子解析中重定向而不重新运行父解析
我已经在网上搜索了几天。我了解,如果您在解析中重定向($state.go 等),转换将被取消,所有解析都会再次运行。
但是,如果我只需要防止进入某个子状态怎么办。而且我在解析中获取我非常不需要也不想再次获取的数据。
我不敢相信这对人们来说是一个不寻常的场景。如果有人有想法,请帮助我让这个 plnkr 工作!
angularjs - Angular:将子模块作为独立应用程序运行到父应用程序中
我正在尝试将 N 次相同的 Angular 模块独立运行到“父”Angular 应用程序中。
使用 ui-route 和 ui-route-extra,我可以显示 N 次子应用程序,但它们不能独立运行:它们作为单例共享服务(我需要为每个子模块实例提供一个唯一的服务实例),并更改状态(通过 state.go 或 ui-sref) 进入特定实例,将状态更改为所有其他实例。
我找不到任何方法将这些子模块作为独立应用程序运行到容器应用程序中......
编辑:我会给你一些背景以避免 XY 问题。
为了简单起见,我建立了一个聊天系统。我已经构建了一个独立的聊天 Angular 应用程序,任何人都可以集成到它的网站中(作为一个小部件)。现在,我正在尝试制作一个管理界面,显示所有打开的聊天室。为避免代码重复,我想将小部件应用程序重用到管理界面中。问题是为每个房间分开行为。我需要多个服务实例,并且应该将状态更改应用于特定房间。
angularjs - 如何以角度从 app.js 调用控制器方法
我想从 app.js 文件中调用控制器方法 [getFacility()]。但是当我使用下面的代码段时,我得到了类似的错误
Error: [$injector:unpr] Unknown provider:
这是我的控制器文件和服务文件
应用程序.js
设施Controlelr.js
这是我在控制台中得到的。
“错误:[$injector:unpr] 未知提供者:facilityControllerProvider <- facilityController http://errors.angularjs.org/1.5.0/ $injector/unpr?p0=facilityControllerProvider%20%3C-NaNacilityController minErr/<@ https: //ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:68:12 createInjector/providerCache.$injector<@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5 .0/angular.js:4397:19 getService@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:4550:39 createInjector/protoInstanceInjector<@ https://ajax. googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:4402:28 getService@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:4550:39 injectionArgs@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:4574:58 instantiate@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0 /angular.js:4616:18 $ControllerProvider/this.$gethttps://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:9870:18 z/<.compile/<@ https ://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.min.js:7:23873 invokeLinkFn@ https://ajax.googleapis.com/ajax/ libs/angularjs/1.5.0/angular.js:9492:9 nodeLinkFn@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:8978:11 CompositeLinkFn@ https:// ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:8226:13 publicLinkFn@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:8106:30 编译生成器/<@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0 /angular.js:8447:20 l@ https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.min.js:7:23072 y/l .compile/https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.1/angular-ui-router.min.js:7:23492 $RootScopeProvider/this.$gethttps:// ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:17143:15 v/y.transitionTo/y.transition<@ https://cdnjs.cloudflare.com/ajax/libs/angular- ui-router/0.3.1/angular-ui-router.min.js:7:18793 processQueue@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:15552:28 调度进程队列/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:15568:27 $RootScopeProvider/this.$gethttps://ajax.googleapis.com/ajax/libs/angularjs/1.5 .0/angular.js:16820:16 $RootScopeProvider/this.$gethttps://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:16636:15 $RootScopeProvider/this.$gethttps ://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:16928:13 done@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular。 js:11266:36 completeRequest@ https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js:11464:7 requestLoaded@ https://ajax.googleapis.com/ajax/libs/ angularjs/1.5.0/angular.js:11405:9
angularjs - ui-router deepstateredirect 参数
我想知道有没有办法从 ajax 调用中指定 deepStateRedirect 参数?例如,如果用户在没有参数的情况下进入此状态,则使用解析从数据加载并将参数传递给 deepStateRedirect?因此,它是一种默认参数,并非在所有情况下都是恒定的。
例如:
更新: 我知道我可以在 state1 控制器中应用该逻辑部分并检查 param1 是否为空,以使用 ajax 调用加载该参数值。但在这种情况下,如果我将使用 $state.go() 那么在浏览器中按下后退按钮后将返回 state1 而不是说明我从哪里导航到 state1
angularjs - 查询参数值未在 angularjs 路由器中更新?
我已经用一个常量参数(页面)、一个动态参数(id)、一个查询参数(日期)来定义我的状态。
我通过像这样传递查询参数从我的控制器调用此状态
调用此状态后,我得到了参数,
我再次从我的控制器调用相同的状态,而不像这样传递查询参数。
现在我得到以下状态参数
$stateParams.date 应该是未定义的,因为我在调用状态时没有传递它。但是默认情况下在 Url 中它是通过的,一旦我通过了它。因为它是可选参数,所以在不通过时应该忽略它。如何在不传递参数的情况下再次调用相同状态时使其“未定义”?我知道如果我通过 $stateParams.date=null 或其他名称它会反映。但我不需要通过我的路由器 url?有没有其他方法可以实现这一目标?
更新 1: 在发布答案后,我使用 '{inherit:false}' 作为预期结果。但是它没有继承我在调用状态时没有传递的任何参数值。但我不想只继承可选的参数值。请参阅下面的代码。
在这里,我必须动态参数 id 和类型。如果假设我只用更新的 id 值调用,那么类型不会被继承。但我想继承类型参数值而不是日期(条件参数)值。
console.log($stateParams.type) -> undefined.(这里我希望'type'参数值应该被继承而不传递。因为我不想更新'type'的值。我只希望以前的值应该保持。无论如何要做到这一点?
angularjs - 查询参数不适用于 ui-router
我需要使用带有查询参数的完整 url 路由到状态,并根据查询参数在控制器中执行操作。
如果我使用带有变量的简单路由 url,它工作正常:“/load/:portName/:id”
如果我要添加查询参数它不起作用:“/load?portName&id”
上面应该可以通过 url 访问:“/load?portName=TEST&id=343”
我在下面发布了我在 html 中定义的路由和控制器的代码片段:
HTML:
angular 和 ui-router 的版本:“angular”:“1.4.10”,“angular-sanitize”:“1.4.10”,“angular-ui-router”:“0.2.10”
我想使用 url 直接加载 route3:localhost:4000/load?portName=test&id=45 谢谢
angularjs - Angular ui-router 不同视图的不同母版页布局
我正在处理 ui-router 问题。
我已经设法配置了将在整个子页面中使用的主母版页。子页面内容也被正确获取。
现在,我卡住的地方是登录/注册视图。由于它们不是同一个主布局的一部分,它们将是在页面中心带有 html 控件的简单布局,没有别的我很难理解如何在 ui 中包含登录/注册-路由器逻辑。
这是我到目前为止所拥有的:
ui路由器逻辑:
缩短版本的母版页(不是登录页)标记:
登录页面(简化版):
现在重定向到新布局(或合并到现有母版页)的正确方法是什么?
angularjs - 将 url 映射到不存在的状态
我正在广泛使用ui-router-extras,但仍然不确定我是否能充分利用它。Future States
从API
. _ 我正在尝试解决一个ui-tabs
使用控制器中的数据动态创建的情况,并且我需要在创建选项卡时为它们创建状态。
只是这样,点击/tabs/
有标签但没有选择任何内容的应该创建状态,点击/tabs/1
应该显示第一个标签。
我试图通过在控制器中创建状态来实现这一点,但点击/tabs/1
不会激活选项卡,而是重定向到默认 url,因为尚未创建状态。
任何帮助表示赞赏。
angularjs - Angular UI 路由参数
我的 route.js 中有这种模式
当我尝试访问 URL
它工作正常,但当我尝试
它重定向到默认视图
任何人都可以帮助我看看我做错了什么?谢谢!
angularjs - angularjs科尔多瓦基地href
尝试base href
为 angularjs html5 Web 应用程序设置正确的值以在科尔多瓦工作
最初使用$locationProvider.html5Mode(true)
with <base href="/">
:
- 应用程序在普通浏览器中完美运行
- cordova 为 css / js / 模板等提供资源错误
(我相信它会在 cordova 根目录而不是平台根目录中查找资源?)
在 SO 和 ui-router FAQs上尝试了一些替代方案:
<base href=".">
按照这个答案使用html5模式:
- 在科尔多瓦发现资产正常(无资源错误)
- ui-router 进入无限循环的尾部旋转,并出现以下错误消息
Error: Failed to execute 'pushState' on 'History': A history state object with URL 'https://page/' cannot be created in a document with origin https://example.com
<base href="./">
使用 html5 模式:
- 在科尔多瓦找到的资产(没有资源错误)
- 给了我使用此处提到的frankwallis 解决方案尝试的可怕
Error: 10 $digest() iterations reached. Aborting!
消息,但这没有帮助(同样的错误)
没有base href
_$locationProvider.html5Mode({enabled: true, requireBase: false});
- 在科尔多瓦找到的资产(没有资源错误)
- 页面开始在自己内部加载??...在某些州两次像角引导?
我的应用配置定义如下所示:
有关信息:分别为cordova/浏览器使用这种替代cordova deviceready
vs angular.element bootstrap的方法