首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ionic的menu.html中调用不同控制器的方法

在ionic的menu.html中调用不同控制器的方法
EN

Stack Overflow用户
提问于 2017-09-08 13:04:56
回答 3查看 458关注 0票数 1

我使用的是ionic 1。我的menu.html是这样的:

代码语言:javascript
复制
<ion-item menu-close ng-click="login()">
  Login
</ion-item>

这个登录()方法是在AppCtrl中实现的。我想要的是,我将这种登录方法转移到一个不会有login.html的LoginCtrl (因为我只提供谷歌登录),并直接做谷歌登录。那么我该怎么做呢:

代码语言:javascript
复制
menu.html:

<ion-item menu-close ng-click="LoginCtrl.login()">
  Login
</ion-item>

login.js:

angular.module('login', [])
.controller('loginController', function($scope) {
  var vm=this;
  vm.login = function(){
    console.log("click");
  }
});

app.js

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
  .state('app', {
   url: '/app',
   abstract: true,
   templateUrl: 'templates/menu.html',
   controller: 'AppController',
   controllerAs: 'AppCtrl'
  })
  .state('app.playlists', {
   url: '/playlists',
   views: {
    'menuContent': {
      templateUrl: 'templates/playlists.html',
      controller: 'PlaylistsController',
      controllerAs: 'PlaylistsCtrl'
    }
   }
  })
  $urlRouterProvider.otherwise('/app/playlists');
});
EN

回答 3

Stack Overflow用户

发布于 2017-09-08 13:43:06

你可以试试$parent。您可以按如下方式访问父作用域

代码语言:javascript
复制
//This assigns the RESULT of login() to $scope.test
$scope.test= $scope.$parent.login();
票数 1
EN

Stack Overflow用户

发布于 2017-09-08 13:09:52

如果我没理解错的话,我相信你需要分配var vm = $scope.LoginCtrl = this。这是因为ng-click有正确的方法来触发,因为它当前没有分配给登录函数。

票数 0
EN

Stack Overflow用户

发布于 2017-09-08 17:10:08

您应该使用controllerAs语法为每个控制器指定一个别名。然后,您可以调用任何方法,如下所示:

代码语言:javascript
复制
alias.method()

您要调用的方法必须在作用域内。例如,当一个控制器嵌套在另一个控制器中时,子控制器可以访问父方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46108991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档