在浏览 Egghead 视频时,关于Directive to direct communication的视频建议我们使用控制器向 'this' 对象添加功能并从其他指令访问它。
视频中使用的完整代码:向该对象添加函数
相关控制器代码如下:
controller: function($scope){
$scope.abilities = [];
this.addStrength = function(){
$scope.abilities.push("Strength");
}
this.addSpeed = function(){
$scope.abilities.push("Speed");
}
this.addFlight = function(){
$scope.abilities.push("Flight");
}
},
我想知道为什么不将函数添加到“this”而不是将其添加到 $scope 本身,尤其是当我们使用隔离范围时?
向 $scope 添加函数的代码:向 $scope添加函数
相关控制器代码如下:
controller: function($scope){
$scope.abilities = [];
$scope.addStrength = function(){
$scope.abilities.push("Strength");
};
$scope.addSpeed = function(){
$scope.abilities.push("Speed");
};
$scope.addFlight = function(){
$scope.abilities.push("Flight");
};
},
或者为什么有控制器功能。为什么我们不能使用链接功能来达到同样的效果?
在链接函数中向 $scope 添加函数:使用链接函数而不是控制器
相关控制器和链接功能如下:
controller: function($scope){
$scope.abilities = [];
$scope.addStrength = function(){
$scope.abilities.push("Strength");
};
$scope.addSpeed = function(){
$scope.abilities.push("Speed");
};
$scope.addFlight = function(){
$scope.abilities.push("Flight");
};
},
我很确定有充分的理由使用控制器和这个对象。我无法理解为什么。