Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从ui路由器获取模板URL_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 从ui路由器获取模板URL

Javascript 从ui路由器获取模板URL,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,也许标题不太清楚 我正在开发两个嵌套的Angular应用程序。两者都有自己的路由器,内置ui路由器。如果我调用主路由器未知的状态,我希望它在子应用程序路由器中搜索此状态,以获取与此状态相关的templateUrl和url 我考虑用解析器创建一个服务。它可以解析文件以找到我想要的数据。这个解决方案可能不是我的最佳选择,这就是为什么我想知道ui路由器中是否有特定的功能/方法来实现它。从我在ui路由器doc上读到的内容来看,似乎不是:/ 请随时询问更多详细信息或建议与我的目标相匹配的其他解决方案:)您

也许标题不太清楚

我正在开发两个嵌套的Angular应用程序。两者都有自己的路由器,内置
ui路由器
。如果我调用主路由器未知的状态,我希望它在子应用程序路由器中搜索此状态,以获取与此状态相关的
templateUrl
url

我考虑用解析器创建一个服务。它可以解析文件以找到我想要的数据。这个解决方案可能不是我的最佳选择,这就是为什么我想知道
ui路由器中是否有特定的功能/方法来实现它。从我在
ui路由器
doc上读到的内容来看,似乎不是:/


请随时询问更多详细信息或建议与我的目标相匹配的其他解决方案:)

您可以通过在子模块上定义的
$stateProvider
配置中使用动态参数来实现这一点。因此,您在主模块上有一些锚定路由,如果存在匹配,ui路由器将简单地获取关联的模板。若并没有匹配的绝对路由/url,那个么ui路由器会退回到你们的参数化路由,如下所示:

// anchored
$stateProvider
  .state('mainAppState', {
    url: '/anchored',
    controller: 'myCtrl'
 })

// sub module
 .state('subAppState', {
    url: /:parameter
    resolve: { // use the resolve and $stateParams to get some parameter with which you can make a request to your API }
    templateProvider: { // inject a service and use it to call your backend }
您可以使用参数,该参数将被传递到
$stateParams
,该参数将被传递到
resolve
块函数,该块函数可以从
$stateParams
检索一些数据或处理数据,然后
templateProvider
可以使用该参数提供有意义的回退URL。这是因为
templateProvider
接收所有解析。它将始终等待解析块中的所有承诺以某种方式解析,然后再执行

这样,您就可以在子应用程序中从主应用程序捕获任何不匹配的URL。希望这有帮助

请参见我的问题:


哦,还有一件事-如果您要在构建过程中损坏JS,请确保使用
$inject=[…]
定义templateProvider函数。否则,您将得到一个未知的提供程序错误。ngAnnotate将不会捕获
templateProvider
函数中的依赖项。或者,您可以只使用对我有用的
/*@ngInject*/

您可以通过在子模块上定义的
$stateProvider
配置中使用动态参数来实现这一点。因此,您在主模块上有一些锚定路由,如果存在匹配,ui路由器将简单地获取关联的模板。若并没有匹配的绝对路由/url,那个么ui路由器会退回到你们的参数化路由,如下所示:

// anchored
$stateProvider
  .state('mainAppState', {
    url: '/anchored',
    controller: 'myCtrl'
 })

// sub module
 .state('subAppState', {
    url: /:parameter
    resolve: { // use the resolve and $stateParams to get some parameter with which you can make a request to your API }
    templateProvider: { // inject a service and use it to call your backend }
您可以使用参数,该参数将被传递到
$stateParams
,该参数将被传递到
resolve
块函数,该块函数可以从
$stateParams
检索一些数据或处理数据,然后
templateProvider
可以使用该参数提供有意义的回退URL。这是因为
templateProvider
接收所有解析。它将始终等待解析块中的所有承诺以某种方式解析,然后再执行

这样,您就可以在子应用程序中从主应用程序捕获任何不匹配的URL。希望这有帮助

请参见我的问题:


哦,还有一件事-如果您要在构建过程中损坏JS,请确保使用
$inject=[…]
定义templateProvider函数。否则,您将得到一个未知的提供程序错误。ngAnnotate将不会捕获
templateProvider
函数中的依赖项。或者你可以直接使用
/*@ngInject*/
,这对我很有用。

我不确定是否能得到它。你的解决方案应该是可行的,但我不知道如何在两个路由器上使用它。这两个应用程序都必须独立工作,我认为你的建议不可能做到这一点。它无法在第二个路由器中获取任何信息。或者我没有完全理解你说的话,这也是可能的。我接受你的回答。即使它与问题不完全匹配,它也允许我创建一个动态路由器。我还使用本文来实现我的目标:。无论如何谢谢你!很高兴这有帮助。我不认为现在有任何其他方法可以用ui路由器创建一个动态路由器。我不确定是否能得到它。你的解决方案应该是可行的,但我不知道如何在两个路由器上使用它。这两个应用程序都必须独立工作,我认为你的建议不可能做到这一点。它无法在第二个路由器中获取任何信息。或者我没有完全理解你说的话,这也是可能的。我接受你的回答。即使它与问题不完全匹配,它也允许我创建一个动态路由器。我还使用本文来实现我的目标:。无论如何谢谢你!很高兴这有帮助。我认为目前没有任何其他方法可以用ui路由器创建动态路由器。