我想使用ui-Router在Angularjs中将一些值从一个视图传递到另一个视图 我不想使用$ rootScope来保存数据或创建新服务(因为我有很多视图传递一小部分数据,所以为几行代码创建新的jsfile并不好玩)。我想要做的一个超级缩小的例子是:
View 1控制器
$scope.goodFood = 10
$scope.badFood = 2
View 2控制器
$scope.results = 10 - 2 (from view 1's scope)
有没有快速的方法来进行这些小型操作?
答案 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