在ngRoute控制器之间传递数据的最佳方式(从一个视图到另一个视图)

时间:2014-08-25 12:51:22

标签: angularjs controller ngroute

我想知道在特定路线上显示的视图之间传递数据的最佳(按角度方式)是什么,我希望避免通过URL传递数据,因为可以很多或者需要某种转换为字符串等等。总而言之,这不是一个好主意。

理解这一点的一个例子:

我有一个新的内容视图,显示空字段,用户可以自由输入他们想要的所有数据。但在某些情况下,我希望根据用户在之前视图中的操作,预先填充其中一些字段。

每个视图都有自己的控制器。通过服务沟通可能仍然有效吗?有没有其他方式和更简单,所以我们不必照顾数据生命周期(即如果我们通过服务谈话,我们必须在阅读后手动丢弃数据。)

我想知道Angular建议的做法是什么?

1 个答案:

答案 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
});