我有一个非常重要的Angular SPA,它使用ui-router来管理多个视图,其中许多视图同时可见。我需要模型在控制器之间可见,因此我编写的服务允许我让控制器下载已更新的模型数据的新副本。
我提前为问题的长度道歉,但我会说明问题,然后陈述我为解决问题所做的工作,我相信Angular社区的其他人一直在努力。
我相信我的问题不是理解控制器/视图的生命周期,因为我得到了第一次去那里时控制器正确初始化的行为,但是后来似乎永远不会再次运行,即使我使用类似的东西导航到它$state.go("state name")
。
在一个视图(设计示例)中,我显示了有关客户的信息摘要,在另一个视图中,我允许用户更新该客户的更详细的个人资料。我希望用户在详细视图中编辑客户姓氏,并让摘要视图自动识别更改并显示它。
我有一个fiddle,显示3个视图和一个简单的密码更改服务。流程如下:
state
(原始的子状态)转到另一个$state.go("state name")
,该按钮还会检索密码并显示密码。这首次 (参见#5)。现在顶视图显示过时的密码,中间视图显示新密码,底部显示新密码。这看起来很正常,因为在DataService包含新密码值后会调用新视图。一些可能的解决方案:
$rootScope.emit()
和$scope.$onRootScope('event name')
我在here找到的$watch
装饰器。通过这种方法,我不太关心事件性能,而是关于将这个庞大的应用程序与一堆事件监听器连接在一起。关于使用角度事件here连接大型应用程序的智慧存在一个问题。$watch
?我没有尝试过这个但是由于性能原因,我很想在数百$digest
es上使用这么大的应用程序。.service
年龄的风险。当然,如果使用Angular有一个简洁的方法来处理我的问题,我宁愿不要使用第三方依赖项来混淆应用程序。$watch
模块的东西,所以我不必依赖大量的事件连接,复杂的状态层次结构,第三方库,或者为数百个{{1然后开始$digest
以更新控制器对Angular服务的引用?提前致谢...我感谢您的帮助!
答案 0 :(得分:2)
这不是ui.router的问题。如果您打算将您的模型(您的数据服务)作为单一的事实来源,那么您必须避免破坏它。错误..对它的引用即是。在您的情况下,将一个primitve(一个字符串)直接分配给范围,而不是对它的引用。换句话说......
var password = {pw:'initial value'};
然后仅在
上设置/绑定password.pw = newpassword
{{password.pw}}
继承人fiddle。此外还有一个关于范围的简短读物,它还包括一个角度聚会的视频,其中Misko谈到“在模型中总是有一个点”link以及$scope
是怎样的揭露模型的地方,而不是你的模特。 (又不是指定像password = 'initial value'
)
希望这有帮助!
答案 1 :(得分:0)
尝试删除离子导航视图的动画属性。 删除属性 动画=“滑动左右”
没关系。