角度视图更改重置$scope变量

Angular view change resets $scope variables

本文关键字:scope 变量 视图      更新时间:2023-09-26

假设我有两个视图共享一个控制器。两个视图都使用ng-route service。如果在一个视图中更改了范围变量,然后切换到第二个视图,为什么第二个查看不更新?

Example:我的控制器有一个变量="hello"。我在两个视图中都很好地输出了这个变量。在view one中,我有一个onclick,它将变量更新为"Whatsup"。这很好,但在事件之后,我切换视图,第二个视图仍在输出"hello"。有办法分享这些吗?如果没有,那么共享数据的技术是什么?

我想让您知道AngularJS是为单页应用程序(SPA)设计的,所以框架不支持这种行为。

每个视图具有不同的scope,即使它们共享相同的控制器。因此,更新一个视图的作用域变量不会更新另一个视图。

如果您想要这种行为,我建议使用$on来侦听事件。

此外,在您的代码上,您有$scope.test = 'hi';,它是在您的控制器上硬编码的,没有任何条件或任何条件,这就是为什么它反映了共享同一控制器的两个视图。

最佳实践是每个控制器有一个视图。随着网站规模的扩大,用一个控制器管理多个模板/视图会变得非常困难。

服务是在控制器之间共享数据的方式。

对于您的示例,您可以有一个activate函数,当每个视图被渲染时,这些函数都会被调用,从您注入的服务中获取更新的变量。您的on-lick函数应该将变量保存到服务中,以使其在控制器之间可用。