角度视图更改重置$scope变量
Angular view change resets $scope variables
假设我有两个视图共享一个控制器。两个视图都使用ng-route service
。如果在一个视图中更改了范围变量,然后切换到第二个视图,为什么第二个查看不更新?
Example
:我的控制器有一个变量="hello"
。我在两个视图中都很好地输出了这个变量。在view one
中,我有一个onclick
,它将变量更新为"Whatsup"
。这很好,但在事件之后,我切换视图,第二个视图仍在输出"hello"
。有办法分享这些吗?如果没有,那么共享数据的技术是什么?
我想让您知道AngularJS是为单页应用程序(SPA)设计的,所以框架不支持这种行为。
每个视图具有不同的scope
,即使它们共享相同的控制器。因此,更新一个视图的作用域变量不会更新另一个视图。
如果您想要这种行为,我建议使用$on
来侦听事件。
此外,在您的代码上,您有$scope.test = 'hi';
,它是在您的控制器上硬编码的,没有任何条件或任何条件,这就是为什么它反映了共享同一控制器的两个视图。
最佳实践是每个控制器有一个视图。随着网站规模的扩大,用一个控制器管理多个模板/视图会变得非常困难。
服务是在控制器之间共享数据的方式。
对于您的示例,您可以有一个activate函数,当每个视图被渲染时,这些函数都会被调用,从您注入的服务中获取更新的变量。您的on-lick函数应该将变量保存到服务中,以使其在控制器之间可用。
相关文章:
- $scope变量被视为字符串AngularJs
- $scope变量,ng隐藏/显示
- $Scope变量在HTML中不更新,尽管在控制器中不断更新
- $scope变量发生更改时未触发Angular$watch
- 将Scope变量作为指针发送,并在控制器外部对其进行更改
- 正在从$scope变量中提取值
- 无法使用angularjs重置$scope变量
- 在 ng-click 中设置$scope变量指令
- 在从websocket服务器推送消息后更新$scope变量
- AngularJS中存在与$scope变量相关的问题.UI中的值未更改
- JavaScript未更新$scope变量的一部分
- 如何使用AngularJS在ng init中传递scope变量
- 如何访问ng-init或ng-checked中服务回调函数中声明的$scope变量
- 在我的HTML中用ng-init初始化$scope变量时出现问题
- angular js$scope变量与字符串绑定
- 如何在ng-init中使用$scope变量
- $scope变量从一个函数传递到另一个函数
- 如何在javascript中填充Angularjs$scope变量
- 阻止$scope变量副本侦听其原始副本
- 我们如何在Angular JS中使用$Scope变量而不声明