将数据从一个路由视图传递到另一个
Passing data from one route view to another
我想在 Angularjs 中使用 ui-Router 将一些值从一个视图传递到另一个视图。
我不想使用 $rootScope 来保存数据或创建新服务(因为我有许多视图传递少量数据,因此为几行代码创建新的 jsfile 并不好玩)。我想做的一个超级缩小的例子是:
视图 1 的控制器
$scope.goodFood = 10
$scope.badFood = 2
视图 2 的控制器
$scope.results = 10 - 2 (from view 1's scope)
有什么 quick 方法可以做这些小操作吗?
最简单的方法是通过路由或查询字符串将所有数据直接存储到 $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'});
但一般来说,建议您将这些值保存在服务中或存储在某些地方。随着应用程序的增长,您可能不得不使用更多的属性来计算
I don't want to use $rootScope to save data or create a new services ( as I have many views that pass small bits of data so creating new jsfile for few lines code is not fun)
无需为新数据位创建新服务。只需使用对象创建价值服务:
app.value("viewData", {});
然后根据需要简单地添加新属性:
app.controller("viewCtrl", function(viewData) {
viewData.newProp = "new info";
console.log(viewData.oldProp);
});
由于值服务是单例,因此对象内容的更改将在视图更改后继续存在。
我想在 Angularjs 中使用 ui-Router 将一些值从一个视图传递到另一个视图。
我不想使用 $rootScope 来保存数据或创建新服务(因为我有许多视图传递少量数据,因此为几行代码创建新的 jsfile 并不好玩)。我想做的一个超级缩小的例子是:
视图 1 的控制器
$scope.goodFood = 10
$scope.badFood = 2
视图 2 的控制器
$scope.results = 10 - 2 (from view 1's scope)
有什么 quick 方法可以做这些小操作吗?
最简单的方法是通过路由或查询字符串将所有数据直接存储到 $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'});
但一般来说,建议您将这些值保存在服务中或存储在某些地方。随着应用程序的增长,您可能不得不使用更多的属性来计算
I don't want to use $rootScope to save data or create a new services ( as I have many views that pass small bits of data so creating new jsfile for few lines code is not fun)
无需为新数据位创建新服务。只需使用对象创建价值服务:
app.value("viewData", {});
然后根据需要简单地添加新属性:
app.controller("viewCtrl", function(viewData) {
viewData.newProp = "new info";
console.log(viewData.oldProp);
});
由于值服务是单例,因此对象内容的更改将在视图更改后继续存在。