亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AngularJS控制器中的'this'與$ scope

AngularJS控制器中的'this'與$ scope

智慧大石 2019-05-29 14:41:29
AngularJS控制器中的'this'與$ scope在AngularJS主頁的“創建組件”部分中,有以下示例:controller: function($scope, $element) {   var panes = $scope.panes = [];   $scope.select = function(pane) {     angular.forEach(panes, function(pane) {       pane.selected = false;     });     pane.selected = true;   }   this.addPane = function(pane) {     if (panes.length == 0) $scope.select(pane);     panes.push(pane);   }}注意如何select添加方法$scope,但是addPane添加了方法this。如果我將其更改為$scope.addPane,則代碼會中斷。文檔說實際上存在差異,但沒有提到差異是什么:以前版本的Angular(pre 1.0 RC)允許您this與該$scope方法互換使用,但現在不再是這種情況了。內的方法上的范圍限定this并且$scope是可互換的(角套this到$scope),但是不另外你的控制器構造內部。如何this和$scope在AngularJS控制器的工作?
查看完整描述

4 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

“addPane”分配給它的原因是因為該<pane>指令。

pane指令require: '^tabs'將來自父指令的tabs控制器對象放入鏈接函數中。

addPane被分配,this以便pane鏈接功能可以看到它。然后在panelink函數中,addPane它只是tabs控制器的一個屬性,它只是tabsControllerObject.addPane。因此,pane指令的鏈接功能可以訪問tabs控制器對象,從而訪問addPane方法。

我希望我的解釋很清楚......這很難解釋。


查看完整回答
反對 回復 2019-05-29
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

我建議你閱讀以下帖子: AngularJS:“Controller as”或“$ scope”?

它很好地描述了使用“Controller as”在“$ scope”上公開變量的優點。

我知道你具體問過方法而不是變量,但我認為最好堅持使用一種技術并與之保持一致。

所以我認為,由于帖子中討論的變量問題,最好只使用“Controller as”技術并將其應用于方法。


查看完整回答
反對 回復 2019-05-29
  • 4 回答
  • 0 關注
  • 1184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號