我使用的是ionic 1。我的menu.html是这样的:
<ion-item menu-close ng-click="login()">
Login
</ion-item>这个登录()方法是在AppCtrl中实现的。我想要的是,我将这种登录方法转移到一个不会有login.html的LoginCtrl (因为我只提供谷歌登录),并直接做谷歌登录。那么我该怎么做呢:
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');
});发布于 2017-09-08 13:43:06
你可以试试$parent。您可以按如下方式访问父作用域
//This assigns the RESULT of login() to $scope.test
$scope.test= $scope.$parent.login();发布于 2017-09-08 13:09:52
如果我没理解错的话,我相信你需要分配var vm = $scope.LoginCtrl = this。这是因为ng-click有正确的方法来触发,因为它当前没有分配给登录函数。
发布于 2017-09-08 17:10:08
您应该使用controllerAs语法为每个控制器指定一个别名。然后,您可以调用任何方法,如下所示:
alias.method()您要调用的方法必须在作用域内。例如,当一个控制器嵌套在另一个控制器中时,子控制器可以访问父方法。
https://stackoverflow.com/questions/46108991
复制相似问题