国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - angularjs怎么知道回調(diào)函數(shù)里需要什么參數(shù)?

瀏覽:126日期:2024-03-06 14:11:41

問題描述

例如這樣

app.controller(’myCtrl’, function($scope, $rootScope) { // 將$rootScope改成其他名字就不行了。 $scope.names = ['Emil', 'Tobias', 'Linus']; $rootScope.lastname = 'Refsnes';});

angular是怎么知道我第二個(gè)參數(shù)需要$rootScope?

問題解答

回答1:

因?yàn)?AngularJS 提供兩種注入方式。一種叫 implicit dependency injection(隱式依賴注入),一種叫 explicit dependency injection(顯式依賴注入)。

你的代碼中,使用的是第一種,隱式依賴注入:

app.controller(’myCtrl’, function($scope, $rootScope) { $scope.names = ['Emil', 'Tobias', 'Linus']; $rootScope.lastname = 'Refsnes';});

由于 $scope 和 $rootScope 都是 AngularJS 的 built-in service,因此 AngularJS 可以找到你想要注入的東西。但如果你改成 rootScope,這樣 AngularJS 就從自己的框架中找不到了。

如果使用顯式依賴注入,就是這樣:

app.controller(’myCtrl’, [’$scope’, ’$rootScope’, function(whatever, blah) { whatever.names = ['Emil', 'Tobias', 'Linus']; blah.lastname = 'Refsnes';}]);

這樣 AngularJS 就會(huì)根據(jù)顯式聲明的 $scope 和 $rootScope 去找。那么你在匿名函數(shù)的參數(shù)里,設(shè)置成什么都沒關(guān)系。注意先后順序就好。

或者,你也可以通過手動(dòng)調(diào)用 $inject 來實(shí)現(xiàn)。就像這樣:

var myController = function($scope, $rootScope) { $scope.names = ['Emil', 'Tobias', 'Linus']; $rootScope.lastname = 'Refsnes';});myConroller.$inject = [’$scope’, ’$rootScope’];app.controller(’myCtrl’, myController);

詳情請(qǐng)參考文檔:https://docs.angularjs.org/gu...Dependency Annotation 那一部分。

文檔中同樣提醒了你,如果你打算壓縮代碼,那就不要使用隱式依賴注入。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 运城市| 华坪县| 奎屯市| 醴陵市| 陵川县| 丁青县| 葫芦岛市| 文成县| 滕州市| 多伦县| 泰宁县| 七台河市| 永德县| 绥化市| 霍城县| 社旗县| 平谷区| 芦山县| 青川县| 贵溪市| 时尚| 阳谷县| 文山县| 澜沧| 泰兴市| 蓝山县| 高密市| 西丰县| 泉州市| 浦城县| 乐亭县| 宁都县| 古交市| 岐山县| 西华县| 裕民县| 永济市| 榆树市| 万荣县| 凤阳县| 响水县|