Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Angularjs 如何在Plunker中使用uiRouter使用url参数设置$stateParams?_Angularjs_Angular Ui Router_Plunker - Fatal编程技术网

Angularjs 如何在Plunker中使用uiRouter使用url参数设置$stateParams?

Angularjs 如何在Plunker中使用uiRouter使用url参数设置$stateParams?,angularjs,angular-ui-router,plunker,Angularjs,Angular Ui Router,Plunker,我试图用plunker用url查询参数演示一些东西,但我甚至无法显示这些参数(因此无法演示我的原始问题) 我创建了一个简单的plunker,其中states url属性如下所示:url:'/root?firstParam' 然后,我想用我在浏览器url中为该queryParameter编写的内容填充$stateParams.firstParam。 , 我可以想象,$stateParams.firstParam对于第一个url是未定义的,但是对于第二个url则设置为“foo”。但在这两种情况下都没

我试图用plunker用url查询参数演示一些东西,但我甚至无法显示这些参数(因此无法演示我的原始问题)

我创建了一个简单的plunker,其中states url属性如下所示:
url:'/root?firstParam'
然后,我想用我在浏览器url中为该queryParameter编写的内容填充
$stateParams.firstParam
。 ,

我可以想象,
$stateParams.firstParam
对于第一个url是未定义的,但是对于第二个url则设置为“foo”。但在这两种情况下都没有定义


如何设置
$stateParams.firstParam

编辑:似乎这实际上是可能的(@Rogerio-Soares答案证明了这一点)。将我的答案保留在这里,因为代码中还有其他错误

无法从Plnkr应用程序中的浏览器搜索栏中获取参数,因为它是在iFrame中运行的。我在下面修复了您的另一个问题:

我将参数添加到您的
语句中,否则如下所示:

$urlRouterProvider.otherwise('/root?firstParam=test');
问题是,当没有找到其他路由时,您重定向到了root,并且没有为路由指定任何参数


更新的PlunkR:

问题是plnkr在iFrame中运行,因此您尝试的URL完全错误

试试这个:

我添加了一个指向根状态的链接,第一个参数设置为“Yeah”,如下所示:

<a ui-sref="root({firstParam: 'YEAH'})">Go to Root with Firstparam = "YEAH"</a>

错误:如果直接在浏览器中打开此URL,查询参数将正确传递给AngularJS应用程序,并设置为
$stateparms.firstParam


正确:我没有找到一种方法,可以在不将代码嵌入iframe的情况下获得plnkr的永久URL。

我的两分钱:正如@Johannes Ferner所说,Plunker使用iframe,但你至少可以通过
文档获得你的URL。推荐人
它有点粗糙,但能工作:D

  $scope.parameters = [];
  var url = document.referrer;
  var props = url.split("?")[1]
  .split("&")
  .map(function(o){ 
    return o.split("=");
  });
  console.log(props);
  for(var i = 0; i < props.length; i++){
    var prop = props[i];
    console.log(prop);
    if($stateParams.hasOwnProperty(prop[0])){
      $scope.parameters.push({name: prop[0], value:prop[1]});
    }
  }
$scope.parameters=[];
var url=document.referer;
var props=url.split(“?”[1]
.分割(&)
.map(函数(o){
返回o.split(“=”);
});
控制台日志(道具);
对于(变量i=0;i

该死,我刚刚输入了答案:D有50个代表:p 17天了,你比我快了几分钟!至少朝着我想要的方向迈出了一步。但是有没有一种方法可以在浏览器的地址栏中实际包含这些参数呢?在Plunkr示例中没有,我所知道的地址栏中的路由映射到Plunkr网站路由。但在一个没有包装在另一个网站中的实际应用程序中,它会起作用。或者我的意思是从实际url中获取url参数,并将其设置到plunker中的演示应用程序中。我想我想要的是双向的。但这似乎不可能?不,我不认为PlunkR会将查询传递给实际的Plunk。也许还有其他类似的工具可以做到这一点。这里有另一个关于JSFIDLE的问题,似乎有一个答案:这确实有点骇客!在某种程度上,它确实完成了任务,但我希望它能在角度生命周期内工作。从答案和评论来看,我认为这个问题的答案是否定的。但是你确实可以从参数中得到一个实际的值。