我注意到ui-bootstrap模态范围有些奇怪。似乎在使用ng-model时,你必须引用$ parent来获得模态控制器的范围。请注意,在我的plunker中,其他属性如ng-options不需要$ parent: http://plnkr.co/edit/xGSHz4EkZvGr2D6CUeBz?p=preview
知道为什么吗?我在这里发现了类似的问题: Scope issues with Angular UI modal
这导致我尝试$ parent更改,但我无法评论该线程,因为我没有足够的声誉。
知道范围似乎发生变化的原因吗?
谢谢!
答案 0 :(得分:14)
模态有自己的范围(我从未使用过Angular UI,但它是唯一可以发生的事情)当你设置“selectedLocation”时,属性设置在模态的范围而不是你的控制器上范围。 $ parent强制它获得控制器的范围,但这不是一个好的解决方案,因为你将自己锁定到某个结构中,总是假设模态的父模型具有“模型”。
这是在控制器范围内使用模型对象的修改过的Plunker(使用model.selectedLocation) http://plnkr.co/edit/B5kZaIA5xi2RediUTBK7?p=preview
无论如何,如果你把你的财产放在像“$ scope.model.selectedLocation”这样改变行为的东西上。现在,当我在模态上引用“model.selectedLocation”时,模态的范围没有模型对象,因此Angular将范围链上移到控制器的范围(它有一个模型对象)。
观看John Lindquist的这段视频,我认为它可以比我更好地解释它。 :-) http://egghead.io/lessons/angularjs-the-dot