Добавить контроллер в меню шаблона в ionic1

У меня есть приложение, созданное на ionic1, и мое приложение содержит шаблон под названием menu.html, и он содержит <ion-side-menus>, который загружен с моими другими шаблонами и представлениями. проблема в том, что я хочу, чтобы мои переменные в $ scope можно было увидеть прямо в моем шаблоне menu.html в зависимости от загруженного в данный момент драйвера.

например, в моем контроллере у меня есть:

$scope.title = "hello";

в menu.html:

{{title}} (should be display "hello")

но мои переменные $scope не отображаются в menu.html если я добавлю ng-controller = "myControllerController", он будет работать, но я хочу избежать этого решения, поскольку содержимое моего контроллера будет загружено дважды. и я выполнил тест, поместив console.info («загружается»), и это сообщение появляется два раза. Мне нужно, чтобы $ scope меню соответствовало текущему контроллеру.

это мой код:

menu.html:

<ion-side-menus enable-menu-with-back-views = "false">
  <ion-side-menu-content>
    <ion-nav-bar class = "bar-stable">
      <ion-nav-back-button>
      </ion-nav-back-button>

      <ion-nav-buttons side = "left">
        <button class = "button button-icon button-clear ion-navicon"  menu-toggle = "left" >
        </button>
      </ion-nav-buttons>
    </ion-nav-bar>
    <ion-nav-view name = "menuContent"></ion-nav-view>
  </ion-side-menu-content>

  <ion-side-menu id = "sidemenu"  side = "left"  >
    <ion-header-bar class = "bar-stable">
      <h1 class = "title">{{title}}</h1>  <!-- title -->
    </ion-header-bar>
    <ion-content>
      <ion-list>
        <ion-item menu-close href = "#/app/productos">
          Registro
        </ion-item>
        <ion-item menu-close href = "#/app/buscar">
          Buscar
        </ion-item>
        <ion-item menu-close href = "#/app/ubicaciones">
          Ubicación
        </ion-item>
      </ion-list>
    </ion-content>
  </ion-side-menu>
</ion-side-menus>

Фактический контроллер: myControllerController.js

tinApp.controller('myControllerController', function($scope) {
 $scope.title = "hello";
});

App.js:

.state('app', {
 url: '/app',
 abstract: true,
 templateUrl: 'templates/menu.html'
})

.state('app.view1', {
url: '/view1',
views: {
  'menuContent': {
    templateUrl: 'templates/view1.html',
    controller: 'myControllerController'
  }
}
})

пробовали ли вы использовать псевдоним контроллера с controllerAs для этих контроллеров и использовать псевдоним в представлении шаблона? (просто идея, никогда не проверял это)

Kaddath 17.05.2018 16:35

@Kaddath Я никогда не пробовал, на самом деле никогда не слышал.

yavg 17.05.2018 16:36

концепция довольно проста, вы добавляете псевдоним в свои состояния, например controllerAs: 'myCtrl', и используете его для доступа к переменным в вашем представлении следующим образом: {{myCtrl.title}}

Kaddath 17.05.2018 16:40

@Kaddath Мне не очень понятно. но {{title}} обновляется в каждом контроллере.

yavg 17.05.2018 16:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Почему бы не добавить прослушиватель событий в контроллер меню, который будет срабатывать каждый раз при изменении страницы. Затем вы можете каждый раз получать имя страницы и использовать его для установки заголовка. А если это настраиваемое имя, просто добавьте его как один из настраиваемых параметров страницы в маршруте.

$rootScope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams){
        ...
    });

Другие вопросы по теме