使用ng-click不调用函数

时间:2015-12-16 15:30:33

标签: angularjs

在控制器内部,我有一个if x then y else ()函数,应该使用ng-click调用,如下所示:

login()

MainJS:

<body ng-app="angularoauthexampleApp">
    <div class="social-buttons">
        <a href="#" class="btn btn-fb"><i class="fa fa-facebook"></i> Facebook</a>
        <a href="#" class="btn btn-google"><i class="fa fa-google" ng-click="login()"></i> Google</a>
    </div>
</body>

控制器:

angular.module('angularoauthexampleApp', [
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch'
])
.config(function ($routeProvider) {
    $routeProvider
    .when('/', {
        templateUrl: 'views/main.html',
        controller: 'MainCtrl'
    })
    .when('/afterlogin', {
        templateUrl: 'views/afterlogin.html',
        controller: 'AboutCtrl'
    })
    .when('/access_token=:accessToken', {
        template: '',
        controller: function ($location, $rootScope) {
            var hash = $location.path().substr(1);

            var splitted = hash.split('&');
            var params = {};

            for (var i = 0; i < splitted.length; i++) {
                var param = splitted[i].split('=');
                var key = param[0];
                var value = param[1];
                params[key] = value;
                $rootScope.accesstoken = params;
            }
            $location.path("/afterlogin");
        }
    })
    .otherwise({
        redirectTo: '/'
    });
});

单击表单上的按钮或事件未被触发时,没有任何反应。我无法看到代码有什么问题,但有些代码无法正常工作

1 个答案:

答案 0 :(得分:1)

MainCtrl被加载到views/main.html

.when('/', {
    templateUrl: 'views/main.html',
    controller: 'MainCtrl'
})

这必须在根html中的ng-view指令中加载。 在html内,您可以使用login()

另一种方法是直接在root html中使用控制器:

<body ng-app="angularoauthexampleApp">
    <div class="social-buttons" ng-controller="MainCtrl">
        <a href="#" class="btn btn-fb"><i class="fa fa-facebook"></i> Facebook</a>
        <a href="#" class="btn btn-google"><i class="fa fa-google" ng-click="login()"></i> Google</a>
    </div>
</body>

此外,您已将ng-click添加到i元素,因此您必须单击login()的G图标才能生效。将它移动到a元素,你应该没问题。