2017-06-02 17 views
1

有什么办法可以将参数从一个页面发送到其他页面,而无需将它们绑定到URL中。在大多数情况下,我们会将URL中的值发送到下一页以检索这些值。喜欢在AngularJs中:有没有办法将参数从一个页面发送到另一个页面,而无需在url中发送参数?

<li ng-repeat="cat in x.Child"><a ng-href="#/ProductListingByCategory/{{cat.Id}}">{{cat.Name}}</a></li> 

在Javascript或Jquery中,我们做的是这样的。

<li><a href='Product/ProductList/" + this.Id + "'>" + this.Name + </a> </li> 

是否有任何替代解决方案,我们不应该在URL中发送参数?在此先感谢:)

+0

您可以在本地存储中设置您的参数,并将它们放入另一个页面。 –

+0

我注意到你的一个标签是asp.net-mvc。为什么不把它们放在视图包里呢? –

+1

你可以选择本地存储或常量 –

回答

0

它可以用几种方法完成,localStorage是一种常见的方式来做到这一点。

示例:在控制器A,可以将变量的值使用本地存储

$scope.age = 50; 
localStorage.setItem('age', $scope.age); 

在控制器B或任何外部设定到一个名称,则可以使用取的getItem它。

var age = localStorage.getItem('age'); 
1

如果您正在使用ui-router,您可以使用状态的params属性做到这一点。

$stateProvider.state('state.name', { 
    url: "/state-url", 
    params: { 
     myParam: null 
    } 
}); 

当你转换到状态,您可以指定myParam任何你想要的值,然后你就可以通过$stateParams访问它。在控制器

使用在查看

<a ui-sref="state.name({ myParam: 'Value of the param' })">Link Text</a> 

使用

$state.go('state.name', { 
    myParam: 'Value of the param' 
}); 

要知道,一个页面加载后,这些参数将是空的,因为它们存储只是在内存。

相关问题