Angular - Соединение видов с другими и / или родительскими компонентами - PullRequest
0 голосов
/ 10 июня 2018

У меня есть угловое приложение, которое имеет ng-view, которое (как и любой хороший MVC должен) манипулирует отображением модели.Данные (модель) поступают из базы данных, и я вызываю их в компонент приложения.Оттуда я хочу распространить (если это правильное слово) модель в ng-view, которая загружает шаблон для отображения данных, основанных на route.Я также хочу иметь возможность фильтровать данные / модель, которая входит в представление, с помощью «top-bar»

Т.е.:

INDEX.HTML:

<html ng-app="app">
<head>...</head>
<body ng-controller="appController">
  <top-bar></top-bar>
  <div ng-view></div>
</body>
</html>

APP.JS:

angular.module('app', ['top-bar','view-one','view-two', 'ngRoute']);
angular.module('app').controller('appController', function() {
  var self = this;
  this.myData = [];
  $http.get('theQuery').then(res => self.myData = res.data);
});
angular.config(function($routeProvider, $locationProvider) {
  $routeProvider
  .when('/view-one', {template:'<view-one></view-one>'})
  .when('/view-two', {template:'<view-two></view-two>'});
});

angular.module('top-bar', ['ngRoute']);
angular.module('top-bar').component('top-bar', {
  templateUrl: './app/top-bar/top-bar.template.html',
  controller: function(filterFilter) {
    this.filters = filterFilter(...);
  }
});

angular.module('view-one', ['ngRoute']);
angular.module('view-one').component('view-one', {
  templateUrl: './app/view-one/view-one.template.html',
  controller: function(filterFilter) {
    // appController.data and topBar.filters would somehow
    // need to be gotten from those respective modules.
    this.data = appController.data;
    this.filter = topBar.filters;
  }
});

Я пытаюсь выяснить, как получить данные из контроллера основного приложения (appController) икомпонента top-bar и отправьте его в любой вид, который в данный момент загружен в ng-view.

Я искал в Интернете, я не могу найти лучший способ сделать это - использовать binding (т.е. binding: {data:'<'}) в view-one контроллере / компоненте, системе $scope s, пользовательском service или чем-то еще.Я также не могу выяснить, смогу ли я использовать любой из них, чтобы получить данные там.Таким образом, любые ответы, которые также включают a) примеры кода и b) ссылки на дополнительную документацию, на которой я мог бы прочитать, были бы очень благодарны.

1 Ответ

0 голосов
/ 10 июня 2018

Рекомендуемый способ сделать это - создать сервис и позволить различным контроллерам работать со ссылкой на объекты, предоставляемые сервисом.

Возможный дубликат введите описание ссылки здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...