У меня есть 2 элемента, как так:Angularjs: Как получить доступ к области контроллера в директиве?
<div ng-hide="showDiv"></div>
<div ng-show="showDiv">
<div directive></div>
</div>
И директиву, как так:
app.directive ('directive', [
...
controller: [
'$scope',
function ($scope) {
$scope.accept = function() {
$scope.showDiv = false;
};
}
],
....
]
Я пытался использовать $ scope.showDiv в директиве, чтобы переключить контроллер, но он не работает , Как получить доступ к области контроллера в рамках директивы?
console.log ($ scope) в директиве показывает $ scope.showDiv === false, хотя $ scope.showDiv === true в контроллере.
Это один из многих случаев наиболее часто недооцениваемых аспектов углового. '$ scope.showDiv' не является объектом, он является примитивным и не соблюдает те же правила для наследования прототипа JavaScript. Это одно из многих мест, где вступает в действие кардинальное правило углового «Всегда использовать точку в привязках». см. http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance-in-angularjs для глубокого погружения по предмету. – Claies
_sidenote_ похоже, что у вас есть [неправильное название директивы] (https://docs.angularjs.org/guide/directive#matching-directives), это должно быть так: 'app.directive ('showMeTheDivDirective', ...' – Grundy