说,我有一个带有隔离范围的自定义指令。像这样:
mainApp.directive('student', function() {
return{
restrict: 'E',
template: '<div ng-click="displayName()">Student: <b>{{student.name}}</b> , Roll No: <b>{{student.rollno}}</b></div><br/>',
scope: {
student : "=name"
},
controller: ['$scope', function($scope){
$scope.displayName = function(){
console.log($scope.student.name);
}
}]
}
});
由于范围是隔离的,我假设每次使用该指令时它都将使用新的$scope
实例化一个新的控制器。如果我创建10个指令实例,我将获得10个不同的范围,每个范围都有$scope.displayName()
函数的不同副本。这将消耗不必要的内存空间。有没有一种方法可以在Angular中只有一个$scope.displayName
的副本?我想做这样的事情:
Student.prototype.displayName = function(){
console.log(this.student.name);
}
function Student(){
this.student;
}
拥有单个副本的函数,具有单独的状态变量副本。有关示例,请参阅此pen。虽然这是一个简单的例子,但实际情况有点复杂。