1

我有一个在 ionic1 中制作的应用程序,我的应用程序包含一个名为的模板menu.html,它包含一个<ion-side-menus>加载了我的其他模板和视图的模板。问题是我希望我的 $scope 中的变量可以直接在我的模板中看到,menu.html具体取决于当前加载的驱动程序。

例如在我的控制器中,我有:

$scope.title="hello";

menu.html

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

但是 如果我添加它,我的$scope变量不会显示,但我想避免这个解决方案,因为我的控制器的内容将被加载两次。我已经完成了测试,放置了一个 console.log(“它加载”),这条消息出现了两次。我需要菜单的 $scope 是根据当前控制器。menu.htmlng-controller = "myControllerController"

这是我的代码:

菜单.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";
});

应用程序.js:

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

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

1 回答 1

1

为什么不向您的菜单控制器添加一个事件监听器,它会在每次页面更改时触发。然后,您每次都可以获取页面名称并使用它来设置标题。如果它是自定义名称,只需将其添加为路由中的页面自定义参数之一。

$rootScope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams){
        ...
    });
于 2018-05-17T14:44:53.007 回答