2014-02-09 36 views
2

我剛剛開始關注Angular,但是很難滿足$scope的需求。 Javascript已經通過上下文(即this)具有範圍概念,並允許程序員使用callapply將該上下文注入到函數中。

Angular的$scope和關鍵字this之間有什麼區別嗎?

如果有差異,那麼控制器或指令中的this的值是多少?

在此先感謝:)

+0

'$ scope'是依賴注入的,我想這不像使用上下文調用函數那麼簡單。但是,如果事實在'ng-controller'中使用'this'作爲'$ scope'和'controller as'語法,你可以。但'範圍'它仍然是可注射的。 – elclanrs

回答

1

是的,他們是不一樣的。構造函數只是一個實例化的構造函數(你寫的函數)由注入器創建。

$scope更概念上與DOM相關。在ng-controller的元素中獲得$scope和子元素。如果具有其自己的作用域(控制器/指令)的子元素具有與父作用域相同的屬性,那麼您將無法訪問它們。它還在其摘要循環(髒檢查/數據綁定)中具有所有內部信息的角度使用,如手錶,事件等。我會通讀this

至於myCtrl as語法,這是很好的,但它確實是把控制器實例放到作用域。用你設定的名字。

例如myCtrl as foobasically$scope.foo = myCtrlInstance;。你也可以在你的控制器中進行操作。

+1

我意識到我在混合我的背景和範圍的概念,這引起了我很多的困惑。特別是在JavaScript中需要依賴注入。另外,我沒有意識到控制器和指令是對象構造函數。我閱讀了你鏈接的文章,然後補充了更多的谷歌搜索,這導致我在這裏http://clubajax.org/javascript-scope-and-context-not-the-same-thing/。 然後,事情終於點擊了我。 JS/Angular中的依賴注入只是調用代碼修改範圍的一種方式。即將閉包封閉成作爲參數傳入的對象。 – hypno7oad

相關問題