добавить контроллер в шаблон меню в ionic1 - PullRequest
0 голосов
/ 17 мая 2018

У меня есть приложение, созданное в 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.log («он загружается»), и это сообщение появляется два раза.Мне нужно, чтобы область $ меню соответствовала текущему контроллеру.

это мой код:

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'
  }
}
})

1 Ответ

0 голосов
/ 17 мая 2018

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

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