我注意到 ui-bootstrap 模态范围有一些奇怪的地方。似乎在其中使用 ng-model 时,您必须引用 $parent 才能到达模态控制器的范围。请注意,在我的 plunker 中,其他属性(例如 ng-options)不需要 $parent:http://plnkr.co/edit/xGSHz4EkZvGr2D6CUeBz?p=preview http://plnkr.co/edit/xGSHz4EkZvGr2D6CUeBz?p=preview
知道为什么吗?我在这里发现了类似的问题:Angular UI 模式的范围问题 https://stackoverflow.com/questions/18924577/scope-issues-with-angular-ui-modal
这导致我尝试 $parent 更改,但我无法对该线程发表评论,因为我没有足够的声誉。
知道为什么范围似乎发生了变化吗?
Thanks!
模式有自己的范围(我从未使用过 Angular UI,但这是唯一可能发生的事情),当您设置“selectedLocation”时,该属性将在模式的范围而不是控制器的范围上设置。 $parent 强制它获取控制器的范围,但这不是一个好的解决方案,因为您会将自己锁定在某个结构中,始终假设模态的父级具有“模型”。
这是一个修改后的 Plunker,在控制器范围内使用模型对象(使用 model.selectedLocation)http://plnkr.co/edit/B5kZaIA5xi2RediUTBK7?p=preview http://plnkr.co/edit/B5kZaIA5xi2RediUTBK7?p=preview
无论如何,如果您将属性放在“$scope.model.selectedLocation”之类的位置上,就会改变行为。现在,当我在模态上引用“model.selectedLocation”时,模态的作用域没有模型对象,因此 Angular 将作用域链向上移动到控制器的作用域(它有一个模型对象)。
观看 John Lindquist 的这段视频,我认为它比我能更好地解释这一点。 :-)http://egghead.io/lessons/angularjs-the-dot http://egghead.io/lessons/angularjs-the-dot
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)