3

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

一个例子来理解这一点:

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

每个视图都有自己的控制器。通过服务进行通信可能仍然有效吗?有没有其他更简单的方法,所以我们不必关心数据的生命周期(即,如果我们通过服务交谈,我们必须在读取后手动丢弃数据)。

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

4

1 回答 1

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
});
于 2014-08-25T13:04:49.137 回答