Доступ к компонентам из другого компонента

0

Используя Angularjs 1.5, у меня возникли проблемы с созданием графика D3.js, который определен на одном компоненте на странице, которая зависит от другой. Я новичок в Angular, и, хотя я думаю, что ответ был похоронен где-то в официальном документе примера дерева компонентов, я не смог полностью следовать логике.

Моя цель состоит в том, чтобы сделать график, определенный в graphController, и сделать его доступным по запросу request.template.html.

Попытка ввести его в request.component, как я бы директивой дал мне неизвестную ошибку поставщика

Я унаследовал установку от кого-то еще (и предпочел бы оставить структуру защиты так, как она есть), и она более или менее выглядит следующим образом:

requests.module.js
angular.module("requests", []);

requests.component.js
angular.module('requests').component('requests', {
    templateURL: 'Bindings/Templates/requests.html',
    controller: function requestsController($scope) {
         [code]
    }
}

requests.template.html
//where I'd like to be able to access the controller from the graphs component

graphs.module.js
angular.module('graphs', []);

graphs.component.js
angular.module('graphs').component('graphs', {
    templateURL: '/Bindings/Templates/graphs.template.html',
    controller: function graph() {(code for d3 graph)};
}

graphs.template.js
{{$ctrl.graph()}}
//this page is just a placeholder to see the graph until I can view it on requests' page

Любая помощь, которую вы можете дать, или способы подумать о том, как я должен пропустить этот вызов контроллера, были бы замечательными. Благодарю!

  • 0
    Во-первых, в компонентах нет доступа к $ scope, это директивная концепция, поскольку область действия компонента всегда изолирована. Если вам нужны компоненты для связи друг с другом, вам нужно изучить требование.
Теги:

1 ответ

1
Лучший ответ

Если вы хотите, чтобы график отображался в компоненте запросов, вы можете просто вставить тег элемента компонента в шаблон запросов. Например, в Bindings/Templates/requests.html insert:

<div class="stuff-to-wrap-graph">
    <graphs></graphs>
</div>

Как только вы создали компонент, подумайте об этом как о уникальном элементе html, который вы можете вставить в любом месте, в том числе и в других компонентах. Обычно вам нужен только прямой доступ к контроллеру другого компонента, если он был тесно связанным дочерним элементом родителя, например. отдельную вкладку в компоненте вкладки, которая должна разговаривать с контейнером родительских вкладок.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню