为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 1159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信