我有以下情况:
查看+ Ctrl 1:菜单,选择一个城市。 $ watch the city属性,在更改时从API刷新该城市中的作业,并相应地修改$ scope.model.myJobs。
view + Ctrl 2:主视图,使用ng repeat迭代$ scope.model.myJobs。
来自API的响应顺利进行并且符合预期,但似乎angular每个控制器都有单独的$ scope.model.myJobs,即使控制器1在HTML语法中位于控制器2内。
有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
执行此操作的“有角度”方法是使用可为您提供模型的服务。即使您更改视图并且可以由多个控制器共享,服务也是持久的。在这个答案中很好地解释了这个概念:https://stackoverflow.com/a/12574818/2187206
对于您的信息,您遇到此问题,因为子控制器仅具有对父作用域的只读访问权限。当您尝试编辑子项中的父作用域时,该属性将克隆在子控制器的本地作用域中,并且不会传播更改。快速而肮脏的方法是在父作用域中创建一个getter和setter,并使用子控制器中的setter更改模型。但你应该明确地使用服务。