将数据从一个路径视图传递到另一个路径视图

时间:2017-03-23 20:18:55

标签: angularjs angular-ui-router angular-services ng-view

我想使用ui-Router在Angularjs中将一些值从一个视图传递到另一个视图 我不想使用$ rootScope来保存数据或创建新服务(因为我有很多视图传递一小部分数据,所以为几行代码创建新的jsfile并不好玩)。我想要做的一个超级缩小的例子是:

View 1控制器
$scope.goodFood = 10 $scope.badFood = 2

View 2控制器
$scope.results = 10 - 2 (from view 1's scope)

有没有快速的方法来进行这些小型操作?

3 个答案:

答案 0 :(得分:2)

  

我不想使用$ rootScope来保存数据或创建新服务(因为我有许多传递小数据的视图,所以为几行代码创建新的jsfile并不好玩)

无需为新的数据位创建新服务。只需使用对象创建价值服务:

app.value("viewData", {});

然后根据需要添加新属性:

app.controller("viewCtrl", function(viewData) {
    viewData.newProp = "new info";
    console.log(viewData.oldProp);
});

由于价值服务是单身人士,对象内容的更改将在视图更改后继续存在。

答案 1 :(得分:1)

由于您已指定要遵循的方法,因此应创建以下

$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'});

但一般情况下,建议您将这些值保存在服务中或存储在某些服务中。随着应用程序的增长,您可能不得不使用更多的属性来计算

答案 2 :(得分:0)

最简单的方法是通过路由或查询字符串将所有数据直接存储到$ routeParams中。

routeUrl: /foods/:quality/:stars

然后在你的控制器中你可以访问

$routeParams.quality - $routeParams.stars