使用侧栏时,离子控制器别名不起作用

时间:2015-09-24 17:00:13

标签: angularjs ionic-framework state angular-ui-router

我有一个使用离子框架构建的应用程序,我按照ionicframework学习页面上的说明进行操作,现在我正在使用原生的sidemenu。问题是,我不能使用控制器别名。这是我的app.js的snipet与路由配置:

 angular.module('checklist-atendimento', [
  'ionic',
  'oc.lazyLoad',
  'ngStorage',
  'ngCordova',
  'ngMask'
])
.config(function($stateProvider, $urlRouterProvider, $httpProvider) {

    $urlRouterProvider.otherwise('/app/atendimento/1');

    $httpProvider.interceptors.push('TratamentoDeErrosService');

    $stateProvider
      .state('app', {
        abstract: true,
        url: '/app',
        views: {
          'conteudo': {
            templateUrl: 'app/templates/menu.html'
          }
        }
      })
      .state('app.inicio', {
        url: '/inicio',
        views: {
          'menuContent': {
            templateUrl: 'app/views/inicio.html',
            controller: 'InicioController',
          }
        }
      })
      .state('app.atendimento', {
        url: '/atendimento/:codMenu',
        views: {
          'menuContent': {
            templateUrl: 'app/views/atendimento.html',
            controller: 'AtendimentoController',
            controllerAs: 'atendimentoCrl'
          }
        }
      })
  });

如您所见,我有2个状态,一个没有控制器(InicioController),另一个使用controllerAs(AtendimentoController)。

在控制器中我把

$scope.test ="TEST!!!"

在视图中我把

<b>{{atendimentoCtrl.test}}<b>

如果我只使用{{test}},则没有任何反应,但会显示文字。 谁知道怎么做?

编辑:

这里有一个谈论的例子:

http://plnkr.co/ohL5HE

在item.html中查看ItemCtrl和index.html内部。 我尝试使用控制器的别名,但它不起作用。

2 个答案:

答案 0 :(得分:1)

这里的问题只是一个错字......这是一个控制器状态

 .state('app.atendimento', {
    url: '/atendimento/:codMenu',
    views: {
      'menuContent': {
        templateUrl: 'app/views/atendimento.html',
        controller: 'AtendimentoController',
        controllerAs: 'atendimentoCrl'
      }
    }
  })

我们可以看到 'atendimentoCrl' 。这是一个视图声明

<b>{{atendimentoCtrl.test}}<b>

我们可以看到 atendimentoCtrl (比较 Ctrl 后缀和 Crl 以上)

因此,t

中缺少 controllerAs

答案 1 :(得分:1)

您需要更改

$scope.test ="TEST!!!"

为:

this.test ="TEST!!!"