在angularjs控制器中创建新函数将不起作用
在angularjs控制器中创建新功能并通过ng单击将其分配给按钮时,功能非常简单在angularjs控制器中创建新函数将不起作用,angularjs,Angularjs,在angularjs控制器中创建新功能并通过ng单击将其分配给按钮时,功能非常简单 function toLogin() { console.log("Entered function"); $state.go('login'); } 我尝试了$scope,但仍然不起作用。 这是我的控制器: 'use strict'; 角度。模块'crudap'。控制器'UserController', ['UserService','$scope','$state',函数UserServi
function toLogin() {
console.log("Entered function");
$state.go('login');
}
我尝试了$scope,但仍然不起作用。
这是我的控制器:
'use strict';
角度。模块'crudap'。控制器'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路由,这是我为视图分配控制器的地方:
}).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。首先,很抱歉澄清得不好,我是新加入社区的,仍然在学习提问的正确方法。您需要使用$scope
$scope.toLogin = function(){
console.log("Entered function");
$state.go('login');
}
要做到这一点,您没有将该方法注册到控制器。 在下面的self.onlyNumbers中添加此项
self.toLogin = toLogin;
我们需要在上下文中看到这一点,以帮助您。发布控制器中包含此功能的相关部分,以及如何使用此控制器,尤其是view@lealceldeiro虽然在大多数情况下你是对的,但这个问题的问题从他提供的代码中是显而易见的,并且可以很容易地得到回答,Sajeetharan did.@BShaps,请在Sajeetharan的评论中看到OP的评论。这就是为什么我选择不假设OP一开始没有发布的内容。这个问题是AngularJS框架中最基本的概念。请在问这样的问题之前搜索!我是社区的新手,很抱歉澄清得不好,我是在Sajeetharan wa上做的一开始是的。在我看来,旧的函数可以正常工作,但我编写的每一个新函数,即使是很小的函数也不能正常工作。但其他函数没有$scope,它们工作正常。起初我尝试使用$scope,但它不工作。我的浏览器正确加载了我的js文件。我将此函数放入我的控制器中,它可以100%工作,结果是不起作用。即使我复制了一个有效的函数,只是更改了它的名称,它也不会起作用。用Plunkers重现这个问题这么简单的问题不应该得到回答。