Angular: Есть ли способ угадать, включена область видимости или нет?

#angularjs

#angularjs

Вопрос:

Здравствуйте, для целей моего кода мне нужно определить, перекрывается ли конкретная $scope область или нет. Представьте, что где-то внутри вашего кода вам нужно создать .parent().parent()...parent() и вам нужно проверить, является ли результирующая область видимости включенной или нет. Есть ли способ это сделать?

[Моя цель]
Моя цель — создать что-то вроде:

 if($scope.isTranscluded()) {
    //do one thing.
} else {
    //do another thing.
}
  

Спасибо за ваше время!!!

Комментарии:

1. Смотрите zachsnow.com /#!/blog / 2013/angularjs-множественная трансклюзия

2. если вам приходится делать .parent().parent()...parent() , вы делаете что-то неправильно

3. @charlietfl Я не выполняю .parent().parent()…parent(). Для объяснения моей логики здесь потребуется некоторое время, но логика в данном случае не имеет отношения к вопросу. Извините за беспорядочный пример.

Ответ №1:

Удивительно, но у вас есть внутреннее частное свойство: $$transcluded

Таким образом, вы можете проверить: if($scope.$$transcluded) {

Однако, поскольку это частное свойство ($ $), вы не можете полагаться на то, что оно не будет нарушено в будущих версиях.


Вам также следует взглянуть на исходный код

https://github.com/angular/angular.js/blob/v1.2.19/src/ng/compile.js#L976

Комментарии:

1. Большое спасибо за решение! Кажется, я пропустил это свойство. Что касается того, что $ $ transcluded является закрытым, к сожалению, я это знаю, но я уже полагаюсь на некоторый закрытый код angular, так что это решение идеально подходит для моей проблемы. Спасибо! 1.