角度自举模态控制器由于不起作用

时间:2016-07-25 01:20:32

标签: angularjs angular-ui-bootstrap

我有一个角度应用程序,显示模式对话框,我无法使控制器功能工作。这是我的应用程序定义:

var deps = ['ngResource', 'ngRoute', 'swaggerUi', 'http-auth-interceptor', 'ngAnimate', 'angular-spinkit', 'ui.bootstrap'];
var myapp = angular.module('myApp', deps);

这是我的控制器,它调用模态和绑定到模态的控制器

myapp.controller('UsersController', ['$scope', '$log', '$uibModal', 'UsersService', function ($scope, $log, $uibModal, UsersService) {
    $scope.users = UsersService.getAll();
    $scope.openAddUserModal = function () {
        $uibModal.open({
            animation: false,
            templateUrl: 'partials/addUserModal.html',
            /* I've even tried controller:'AddUserModalCtrl as addUserModalCtrl' */
            controller: 'AddUserModalCtrl',
            controllerAs: 'addUserModalCtrl',
            bindToController: true
        });
    };
}]).controller('AddUserModalCtrl', ['$scope', '$log', '$uibModalInstance', function ($scope, $log, $uibModalInstance) {
    $scope.cancel = function () {
        console.log('userToAdd: ' + JSON.stringify($scope.userToAdd));
        $uibModalInstance.dismiss('cancel');
    };
    $scope.addUser = function () {
        console.log($scope.username);
    }
}])

这是模态html:

<div class="modal-header">
    <h3 class="modal-title">Add new user</h3>
</div>
<div class="modal-body">
    <form role="form">
        <button ng-click="addUser()" type="submit" class="btn btn-default">Submit</button>
        <!-- this works if I remove the 'addUserModalCtrl' -->
        <button ng-click="addUserModalCtrl.cancel()" type="submit" class="btn btn-default">Cancel</button>
    </form>
</div>

1 个答案:

答案 0 :(得分:2)

这是因为您要将方法添加到$scope。使用controllerAs语法时不会这样做。您应该在this.中使用AddUserModalCtrl表示法来表示您的功能。

this.cancel = function () {
    console.log('userToAdd: ' + JSON.stringify(this.userToAdd));
    $uibModalInstance.dismiss('cancel');
};
this.addUser = function () {
    console.log(this.username);
}