2013-09-24 91 views
8

我注意到ui-bootstrap模式範圍的一些奇怪現象。看起來,在它中使用ng-model時,你必須引用$ parent來達到模態控制器的範圍。在我的掠奪者注意到,這樣的ng選項的其他屬性不需要$父: http://plnkr.co/edit/xGSHz4EkZvGr2D6CUeBz?p=previewui-bootstrap模式範圍bug

任何想法爲什麼?我在這裏發現了一個類似的問題: Scope issues with Angular UI modal

這導致我嘗試$ parent更改,但由於我沒有足夠的信譽而無法對該主題發表評論。

任何想法爲什麼範圍似乎改變?

謝謝!

回答

14

該模式有其自己的範圍(我從來沒有使用Angular UI,但它是唯一可以發生的事情),當你設置「selectedLocation」時,屬性設置的是模態的範圍,而不是你的控制器的範圍。 $父強制它讓你的控制器的範圍,但這不是一個好的解決方案,因爲你會鎖定你的自我進入一個特定的結構,總是假設模態的父母有「模型」。

下面是使用你的控制器範圍的模型對象修改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