У меня есть приложение, созданное на 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'
}
}
})
@Kaddath Я никогда не пробовал, на самом деле никогда не слышал.
концепция довольно проста, вы добавляете псевдоним в свои состояния, например controllerAs: 'myCtrl', и используете его для доступа к переменным в вашем представлении следующим образом: {{myCtrl.title}}
@Kaddath Мне не очень понятно. но {{title}} обновляется в каждом контроллере.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Почему бы не добавить прослушиватель событий в контроллер меню, который будет срабатывать каждый раз при изменении страницы. Затем вы можете каждый раз получать имя страницы и использовать его для установки заголовка. А если это настраиваемое имя, просто добавьте его как один из настраиваемых параметров страницы в маршруте.
$rootScope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams){
...
});
пробовали ли вы использовать псевдоним контроллера с
controllerAsдля этих контроллеров и использовать псевдоним в представлении шаблона? (просто идея, никогда не проверял это)