在angularjs控制器中创建新功能将不起作用

时间:2018-04-05 17:36:50

标签: angularjs

在angularjs控制器中创建新功能并使用ng-click将其分配给按钮时功能很简单,

function toLogin() {
    console.log("Entered function");
    $state.go('login');
}

我尝试使用$ scope但仍无法正常工作。 这是我的控制器:

'use strict';

angular.module( 'crudApp')。控制器( 'UserController中',     ['UserService','$ scope','$ state',函数(UserService,$ scope,$ state){

    var self = this;
    self.user = {};
    self.users=[];
    self.user.enabled = false;
    self.user.confirmationToken = '';
    self.loggedUser = null;
    self.submit = submit;
    self.getAllUsers = getAllUsers;
    self.createUser = createUser;
    self.updateUser = updateUser;
    self.removeUser = removeUser;
    self.editUser = editUser;
    self.reset = reset;
    self.firstNamePattern=/^[A-Z][a-z]*\S$/;
    self.lastNamePattern=/^[A-Z][a-z]*\S$/;
    self.userNamePattern= /^\S*$/;
    self.passwordPattern = /^\S*$/;
    self.phonePattern = /^[0-9]+\S$/;
    self.successMessage = '';
    self.errorMessage = '';
    self.done = false;

    self.onlyIntegers = /^\d+$/;
    self.onlyNumbers = /^\d+([,.]\d+)?$/;
    function toLogin() {
        console.log('Entered function');
       // $state.go('login');
    }
    function submit() {
        console.log('Submitting');
        if (self.user.id === undefined || self.user.id === null) {
            console.log('Saving New User', self.user);
            createUser(self.user);
        } else {
            updateUser(self.user, self.user.id);
            console.log('User updated with id ', self.user.id);
        }
    }
    $scope.moje = function () {
        console.log('Submitting');
        if (self.user.id === undefined || self.user.id === null) {
            console.log('Saving New User', self.user);
            createUser(self.user);
        } else {
            updateUser(self.user, self.user.id);
            console.log('User updated with id ', self.user.id);
        }
    }

    function createUser(user) {
        console.log('About to create user');
        UserService.createUser(user)
            .then(
                function (response) {
                    console.log('User created successfully');
                    self.successMessage = 'User created successfully';
                    self.errorMessage='';
                    self.done = true;
                    self.user={};
                    $scope.registerForm.$setPristine();
                    $scope.registerForm.$setUntouched();
                   // $state.reload();

                },
                function (errResponse) {
                    console.error('Error while creating User');
                    self.errorMessage = 'Error while creating User: ' + errResponse.data.errorMessage;
                    self.successMessage='';
                }
            );
    }


    function updateUser(user, id){
        console.log('About to update user');
        UserService.updateUser(user, id)
            .then(
                function (response){
                    console.log('User updated successfully');
                    self.successMessage='User updated successfully';
                    self.errorMessage='';
                    self.done = true;
                    $scope.myForm.$setPristine();
                },
                function(errResponse){
                    console.error('Error while updating User');
                    self.errorMessage='Error while updating User '+errResponse.data;
                    self.successMessage='';
                }
            );
    }


    function removeUser(id){
        console.log('About to remove User with id '+id);
        UserService.removeUser(id)
            .then(
                function(){
                    console.log('User '+id + ' removed successfully');
                },
                function(errResponse){
                    console.error('Error while removing user '+id +', Error :'+errResponse.data);
                }
            );
    }


    function getAllUsers(){
        return UserService.getAllUsers();
    }

    function editUser(id) {
        self.successMessage='';
        self.errorMessage='';
        UserService.getUser(id).then(
            function (user) {
                self.user = user;
            },
            function (errResponse) {
                console.error('Error while removing user ' + id + ', Error :' + errResponse.data);
            }
        );
    }
    function reset(){
        self.successMessage='';
        self.errorMessage='';
        self.user={};
        $scope.myForm.$setPristine(); //reset Form
    }
}


]);

而且我使用ui-routing,这就是我将控制器分配给我的视图的地方:

}).state('success',{
                url: '/success',
                templateUrl: 'partials/successMessage',
                controller: 'UserController',
                controllerAs: 'sCtrl'
            });

代码的ftl部分在这里:

<button type="button" ng-click='sCtrl.toLogin()' class="btn btn-primary">Login</button> 

它甚至不会打印到控制台,但是在分配旧功能时它可以很好地工作,尽管它要复杂得多。 PS。很抱歉一开始很难澄清,我是社区新手,仍在学习提问的正确方法。

2 个答案:

答案 0 :(得分:1)

您没有将方法注册到控制器,为此。 在self.onlyNumbers

中添加以下内容
self.toLogin = toLogin;

答案 1 :(得分:-1)

您需要使用$ scope

$scope.toLogin = function(){
 console.log("Entered function");
 $state.go('login');
}