8

我注意到 ui-bootstrap 模态范围有些奇怪。似乎在其中使用 ng-model 时,您必须引用 $parent 才能进入模态控制器的范围。请注意,在我的 plunker 中,诸如 ng-options 之类的其他属性不需要 $parent: http ://plnkr.co/edit/xGSHz4EkZvGr2D6CUeBz?p=preview

知道为什么吗?我在这里发现了一个类似的问题: Angular UI modal 的范围问题

这导致我尝试 $parent 更改,但我无法评论该线程,因为我没有足够的声誉。

知道为什么范围似乎发生了变化吗?

谢谢!

4

1 回答 1

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

于 2013-09-24T21:26:55.667 回答