我想知道在特定路线上显示的视图之间传递数据的最佳(按角度方式)是什么,我希望避免通过URL传递数据,因为可以很多或者需要某种转换为字符串等等。总而言之,这不是一个好主意。
理解这一点的一个例子:
我有一个新的内容视图,显示空字段,用户可以自由输入他们想要的所有数据。但在某些情况下,我希望根据用户在之前视图中的操作,预先填充其中一些字段。
每个视图都有自己的控制器。通过服务沟通可能仍然有效吗?有没有其他方式和更简单,所以我们不必照顾数据生命周期(即如果我们通过服务谈话,我们必须在阅读后手动丢弃数据。)
我想知道Angular建议的做法是什么?
答案 0 :(得分:2)
对于这种情况,服务或工厂都可以。您还可以将以前输入的数据存储在本地存储中,例如使用该服务。基本上它是未来改进的更好方式。
作为一种更简单的方法,您只需使用$ rootScope即可。它可以在你想要的所有控制器中使用。
只需将其注入控制器或应用程序本身。
app.controller('myCtrl', function($rootScope){
$rootScope.myStoredValues = {...};
});
或
app.run(function($rootScope){
$rootScope.root = $rootScope;
$rootScope.myStoredValues = {...};
// this way you don't need to inject it into controller,
// it will be available there via $scope.root.myStoredValues
});