我尝试使用plunker使用url-query参数演示某些内容,但我甚至无法显示参数(然后不会显示我原来的问题)。
我创建了一个简单的plunker,状态url属性如下所示:url: '/root?firstParam'
我想要的是用我在queryParameter的浏览器的url中写的任何内容填充$stateParams.firstParam
。
Plunker,plunkerWithParameter?firstParam=foo
我认为第一个网址的$stateParams.firstParam
未定义,但设置为" foo"为了第二个。但在两种情况下都没有定义。
如何设置$stateParams.firstParam
?
答案 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中。