splincodewd
@splincodewd
Developer

Как сделать так, чтобы внутренние компоненты наследовали внешний $scope?

app.js
// подключаем главный компонент формы регистрации-авторизации
import loginComponent from './angular/directives/loginContent.js';
app.component('loginContent', loginComponent);

// подключаем компонент навигации
import navComponent from './angular/directives/navContent.js';
app.component('navigation', navComponent);

// подключаем контроллер
import LoginController from './angular/controllers/LoginController.js';


index.html
<login-content></login-content>

login.html
<div ng-controller="LoginCtr">
    
    <navigation></navigation>
    {{ $text }}

</div>


navigation.html
<li ng-repeat="el in menu" >
 {{ el.title }}
</li>


LoginCtr.js
/**
 * Контроллер, обрабатывающий компонент формы входа и регистрации
 * @param {object} $rootScope - общая область видимости шаблонов для приложения 
 * @param {object} $http - ajax-объект для работы с http-запросами
 * @param {object} $compile - объект для добавления нового DOM и связывания с обработчиками
 * @param {object} $scope - локальная область видимости шаблонов относительно компонента контроллера
 * @param {object} dataService - сервис, обменивающийся данными между контроллерами
 */
export default ($rootScope, $http, $compile, $scope, dataService) => {
    
   $scope.text = "hello world"; // выводится в компоненты
   $scope.menu = [
         {title: 1},
         {title: 2}
   ];
}


Однако, компонент navigation хоть и подключается и его html виден в отладчике, но сами данные не выводятся

Как вложенным компонентам передавать данные контроллера верхнего уровня, чтобы они могли спокойно выводить то, что мне нужно?
  • Вопрос задан
  • 132 просмотра
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
передавайте данные явно через биндинги.
Ответ написан
1) Данные, которые нужны компоненту передавайте в него явно.
2) Используйте controlleras
https://github.com/rwwagner90/angular-styleguide-es6
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы