У меня есть следующая директива. Когда я запускаю функцию open
и добираюсь до отладчика, я получаю сообщение об ошибке в консоли, которое сообщает Uncaught ReferenceError: $scope is not defined(…)
.
Как можно позвонить $scope.open
, когда $scope
не определено?
app.directive('photo', ['$http', 'modal', function($http, modal) {
return {
replace: true,
templateUrl: '/assets/photo.html',
transclude: false,
scope: {
result: '=',
index: '@'
},
controller: ['$scope', '$http', 'modal', function($scope, $http, modal) {
$scope.prev = $scope.index - 1;
$scope.open = function() {
debugger;
};
}]
}
}]);
Вот мой DOM:
<div ng-repeat="r in results" photo result="r" index="$index"></div>
Если я вставляю console.log($scope)
как раз перед моей open
функции, а затем снова прямо перед debugger
в этой функции, я получаю следующие результаты. Левое перед open
называется, справа после open
.
Что вы видите, когда вы добавляете эту строку перед '' 'отладчик,' '' '' '' console.log ($ сфера); '' '. Это может быть важно, потому что компилятор может оптимизировать вашу переменную $ scope, когда вы находитесь внутри $ scope.open. –
Я только что обновил свой вопрос на скриншоте. Обратите внимание, что 'temp1! = Temp2'. – ACIDSTEALTH
'$ id' не должен быть строкой. Рамка AngularJS использует числа для области '$ id'. Что-то вне Angular возится с этой зарезервированной переменной. – georgeawg