我正在使用离子1.我的menu.html有这样的东西:
<ion-item menu-close ng-click="login()">
Login
</ion-item>
这个login()方法在AppCtrl中。 我想要的是我将这个登录方法转移到一个LoginCtrl,它不会有login.html(因为我只提供谷歌登录)并直接进行谷歌登录。那么我该怎么做呢:
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');
});
答案 0 :(得分:1)
你可以尝试$parent
。
您可以按如下方式访问父作用域
//This assigns the RESULT of login() to $scope.test
$scope.test= $scope.$parent.login();
答案 1 :(得分:0)
如果我理解正确,我相信您需要指定var vm = $scope.LoginCtrl = this
。这样,ng-click具有正确的触发方法,因为它当前未分配给登录功能。
答案 2 :(得分:0)
您应该使用controllerAs语法为每个控制器提供别名。然后,您可以按如下方式调用任何方法:
alias.method()
您正在调用的方法必须在范围内。例如如果控制器嵌套在另一个控制器中,则子控制器可以访问父方法。