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

时间:2016-02-29 13:24:45

标签: angularjs angular-ui-router plunker

我尝试使用plunker使用url-query参数演示某些内容,但我甚至无法显示参数(然后不会显示我原来的问题)。

我创建了一个简单的plunker,状态url属性如下所示:url: '/root?firstParam' 我想要的是用我在queryParameter的浏览器的url中写的任何内容填充$stateParams.firstParamPlunkerplunkerWithParameter?firstParam=foo

我认为第一个网址的$stateParams.firstParam未定义,但设置为" foo"为了第二个。但在两种情况下都没有定义。

如何设置$stateParams.firstParam

3 个答案:

答案 0 :(得分:7)

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

由于它在iFrame中运行,因此无法从Plnkr应用中的浏览器搜索栏中获取参数。我在下面解决了你的另一个问题:

我将参数添加到<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/options" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="5"> <TextView android:id="@+id/option_number" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:paddingLeft="5dp" android:text="A" android:maxLines="4" android:textColor="@color/charcoal" android:textSize="17sp" android:textStyle="bold" /> <TextView android:id="@+id/option_content" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="4" android:maxLines="4" android:text="option content...." android:textColor="@color/charcoal" android:textSize="17sp" /> </LinearLayout> 语句中,如下所示:

otherwise

问题是,当没有找到其他路由时,您重定向到root,并且您没有为路由指定任何参数。

更新了PlunkR:https://plnkr.co/edit/OxEGVkhzBO332ym3q8fV?p=preview

答案 1 :(得分:3)

我的两分钱:正如@Johannes Ferner所说,Plunker使用iframe,但你至少可以使用document.referrer获取你的网址 这有点hacky但它​​有效: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]});
    }
  }

https://plnkr.co/edit/Cejgj1cLJnwQT2LzjsRm?firstParam=foo&p=preview

答案 2 :(得分:0)

问题是plnkr在iFrames中运行,所以你尝试的URL完全错误。

试试这个: https://plnkr.co/edit/jV2pdV6q8g8QZ132Qu3A

我添加了一个链接到你的根状态,第一个参数设置为'Yeah',如下所示:

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

此网址的结果是:https://run.plnkr.co/roo/root?firstParam=YEAH

错误如果您直接在浏览器中打开此网址,则query-params会正确传递到您的AngularJS应用程序并设置为$stateParams.firstParam

正确:我没有找到一种方法来获取plnkr的永久URL,而代码没有嵌入到iframe中。