Angularjs 将数据从一个路由视图传递到另一个路由视图
我想使用ui路由器在Angularjs中将一些值从一个视图传递到另一个视图。Angularjs 将数据从一个路由视图传递到另一个路由视图,angularjs,angular-ui-router,angular-services,ng-view,Angularjs,Angular Ui Router,Angular Services,Ng View,我想使用ui路由器在Angularjs中将一些值从一个视图传递到另一个视图。 我不想使用$rootScope来保存数据或创建新的服务(因为我有许多视图传递少量数据,所以为几行代码创建新的jsfile并不有趣)。我想做的一个超小型示例是: 视图1的控制器 $scope.goodFood=10 $scope.badFood=2 视图2的控制器 $scope.results=10-2(来自视图1的范围) 有没有什么快速的方法来完成这些小型操作 最简单的方法是通过route或查询字符串将所有数据直接存储
我不想使用$rootScope来保存数据或创建新的服务(因为我有许多视图传递少量数据,所以为几行代码创建新的jsfile并不有趣)。我想做的一个超小型示例是: 视图1的控制器
$scope.goodFood=10
$scope.badFood=2
视图2的控制器$scope.results=10-2(来自视图1的范围)
有没有什么快速的方法来完成这些小型操作 最简单的方法是通过route或查询字符串将所有数据直接存储到$routeParams中
routeUrl: /foods/:quality/:stars
然后在控制器中,您可以访问
$routeParams.quality - $routeParams.stars
由于您已经指定了要遵循的方法,因此应该创建以下内容
$stateProvider
.state('view2', {
url: "/view2/:param1/:param2",
templateUrl: 'view2.html',
controller: function ($stateParams) {
console.log($state.params.param1+"-"+$state.params.param2);
}
});
你想从哪里打电话
$state.go('view2',{param1:'10', param2:'2'});
但一般来说,建议您将这些值保存在服务或某些存储位置。随着应用程序的增长,您可能需要使用更多的属性来计算
我不想使用$rootScope来保存数据或创建新的服务(因为我有许多视图传递少量数据,所以为几行代码创建新的jsfile并不有趣)
不需要为新的数据位创建新的服务。只需使用对象创建价值服务:
app.value("viewData", {});
然后只需根据需要添加新属性:
app.controller("viewCtrl", function(viewData) {
viewData.newProp = "new info";
console.log(viewData.oldProp);
});
由于值服务是单例的,因此对对象内容的更改将在视图更改后继续生效。$stateparms stateparms用于在状态之间更改,但在这里,我处于一个包含多个视图(模板和控制器)的单一状态中。为什么不将参数传递给子视图?您的意思是类似于$state.go('view2'),{param1:$scope.goodFood,param2:$scope.badFood}?很抱歉,我最近才使用Angular。即使参数没有出现在url中,您也可以指定要接收的参数。请参阅