Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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 将数据从一个路由视图传递到另一个路由视图_Angularjs_Angular Ui Router_Angular Services_Ng View - Fatal编程技术网

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或查询字符串将所有数据直接存储

我想使用ui路由器在Angularjs中将一些值从一个视图传递到另一个视图。
我不想使用$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中,您也可以指定要接收的参数。请参阅