假设我有两个共享控制器的视图。两个视图都使用ng-route service
。如果在一个视图中更改了范围变量,然后切换到第二个视图,那么第二个视图怎么不更新?
Example
:我的控制器有一个= "hello"
的变量。我在两个视图中都输出了这个变量。在view one
我有一个onclick
,它将变量更新为"Whatsup"
。这工作正常,但在事件发生后我切换视图,第二个视图仍在输出"hello"
。有没有办法分享这些?如果没有,那么共享数据的技术是什么?
答案 0 :(得分:0)
我希望您知道AngularJS是为单页面应用程序(SPA)设计的所以框架不支持此行为。
每个视图都有不同的scope
,即使它们共享同一个控制器。因此,更新一个视图的范围变量不会更新另一个视图。
如果您需要此行为,我建议您使用$on
来收听事件。
此外,在您的代码中,您的控制器上的$scope.test = 'hi';
是硬编码的,没有任何条件或任何原因,这就是为什么它反映了共享同一个控制器的两个视图的原因。
答案 1 :(得分:0)
最佳做法是每个控制器有一个视图。随着您的网站扩展,使用一个控制器管理多个模板/视图将变得非常困难。
服务是在控制器之间共享数据的方式。
对于您的示例,您可以使用在呈现每个视图时调用的激活函数,这些函数从您注入的服务获取更新的变量。您的on lick函数应该将变量保存到服务中,以使其可以跨控制器使用。