我有以下情况:
view+Ctrl 1:菜单,选择城市。$watch 城市属性,当它改变时从 API 刷新该城市的工作,并相应地修改 $scope.model.myJobs。
view+Ctrl 2:主视图,使用 ng 重复遍历 $scope.model.myJobs。
API 的响应按预期顺利进行,但似乎每个控制器都有单独的 $scope.model.myJobs,即使控制器 1 在 HTML 语法中位于控制器 2 内。
有没有办法解决这个问题?
我有以下情况:
view+Ctrl 1:菜单,选择城市。$watch 城市属性,当它改变时从 API 刷新该城市的工作,并相应地修改 $scope.model.myJobs。
view+Ctrl 2:主视图,使用 ng 重复遍历 $scope.model.myJobs。
API 的响应按预期顺利进行,但似乎每个控制器都有单独的 $scope.model.myJobs,即使控制器 1 在 HTML 语法中位于控制器 2 内。
有没有办法解决这个问题?
执行此操作的“角度”方法是使用可为您提供模型的服务。即使您更改视图,服务也是持久的,并且可以由多个控制器共享。这个答案很好地解释了这个概念:https ://stackoverflow.com/a/12574818/2187206
供您参考,您正面临这个问题,因为子控制器只有对父范围的只读访问权限。当您尝试在子控制器中编辑父范围时,该属性将被克隆到子控制器的本地范围中,并且不会传播更改。纠正此问题的一种快速而肮脏的方法是在您的父范围内创建一个 getter 和一个 setter,并在子控制器中使用这个 setter 更改模型。但是您应该明确地使用服务。