我是angularjs的新手。我想知道angularjs控制器中的$scope
和angularjs指令中的scope
之間有什麼區別。
我試圖在控制器以使用範圍和我得到下面的錯誤:
Error: [$injector:unpr] Unknown provider: scopeProvider <- scope
我是angularjs的新手。我想知道angularjs控制器中的$scope
和angularjs指令中的scope
之間有什麼區別。
我試圖在控制器以使用範圍和我得到下面的錯誤:
Error: [$injector:unpr] Unknown provider: scopeProvider <- scope
$scope
是由$scopeProvider
提供的服務。你可以把它注射到控制器中,指令或其他服務的採用了棱角分明的內置依賴注入:
module.controller(function($scope) {...})
這是簡寫形式,
module.controller(['$scope', function($scope) {...}])
在第一個版本的依賴注入推斷基於函數參數名稱(「$ scope」+「Provider」)的提供者名稱(「$ scopeProvider」)。 第二個版本也構建了這樣的提供者名稱,但在數組中使用了明確的'$scope'
,而不是函數參數名稱。這意味着您可以使用任何參數名稱而不是$scope
。
因此你結束了這樣的代碼: module.controller(['$scope', function(scope) {...}])
其中scope
可以是任何東西,它是一個函數參數的名稱,可能是foo
或a12342saa
。
依賴注入基本上做到這一點:
function controller(def) {
//def[def.length-1] is the actual controller function
// everything before are it's dependencies
var dependencies = [];
for(dep in def.slice(0, def.length-1)) {
dependencies.push(__get_dependency_by_name(dep));
}
def[def.length-1].apply(dependencies);
}
我想,之所以使用「範圍」,而不是「$範圍」作爲一個依賴的名字都不行,現在是明確的。沒有定義「scopeProvider」。
謝謝我能夠得到依賴注入器的工作,但我想知道關於隔離範圍,爲什麼我們在指令中使用隔離範圍而不是$ scope –
隔離範圍仍然是範圍。閱讀文檔:https://docs.angularjs.org/guide/directive#isolating-the-scope-of-a-directive –
這[link](https://groups.google.com/forum/#!topic/angular/-w6FAkpDYzM)對你很有用 – Gunaseelan