Angular JS 按钮 ng-click 不调用方法
Angular JS Button ng-click doesn't call method
现在我阅读了很多关于这个问题的 post,但是 none 似乎有一个解决方案。
在我的 angular 应用程序中,我使用 angular-fullstack:route
创建了一条新路线
这是我的控制器、模板和配置文件:
控制器:
'use strict';
(function() {
class AnmeldungCtrl {
constructor($http, $window, $uibModal, $state) {
}
searchUser(searchString) {
console.log("search Method");
if (searchString.isNaN()) {
this.state = "search";
console.log("search");
//TODO Search for name
}
else if (searchString >= 1000000) {
this.state = "anmeldung";
console.log("anmeldung");
//TODO Search for bar code
}
else {
this.state = "edit";
console.log("edit");
//TODO Search for Participant
}
}
}
angular.module('schwimmfestivalApp').controller('AnmeldungCtrl', AnmeldungCtrl);
})();
模板:
<div>
<input type="text" ng-model="query" >
<button ng-click="ctrl.searchUser(query)">Search</button>
{{query}}
</div>
配置文件:
'use strict';
angular.module('schwimmfestivalApp')
.config(function ($stateProvider) {
$stateProvider
.state('anmeldung', {
url: '/anmeldung',
templateUrl: 'app/anmeldung/anmeldung.html',
controller: 'AnmeldungCtrl',
controllerAs: 'ctrl'
});
});
正如我在标题中提到的,出于某种原因,控制器上的方法没有被调用。我不知道为什么。
在我的其他路线上它确实有效。
希望大家多多指教
提前致谢。
尝试仅使用 searchUser(query) 它可能会起作用,因为控制器已经添加,无需使用控制器调用该函数
好的,我让它工作了。这是我的错误(正如预期的那样)。我的一位同事在另一个路径中使用相同的标识符创建了一个 cnontroller。
所以 angular 如果发生这样的事情,不会抛出错误。因为第二个控制器位于较低的路径中,所以它位于原始控制器之后的 include 中。
感谢@MMhunter 在构造函数中放置了控制台输出。这不是在我的开发环境中打印的。所以我开始寻找原因,找到了第二个控制器。
感谢大家的帮助。
现在我阅读了很多关于这个问题的 post,但是 none 似乎有一个解决方案。
在我的 angular 应用程序中,我使用 angular-fullstack:route
创建了一条新路线这是我的控制器、模板和配置文件:
控制器:
'use strict';
(function() {
class AnmeldungCtrl {
constructor($http, $window, $uibModal, $state) {
}
searchUser(searchString) {
console.log("search Method");
if (searchString.isNaN()) {
this.state = "search";
console.log("search");
//TODO Search for name
}
else if (searchString >= 1000000) {
this.state = "anmeldung";
console.log("anmeldung");
//TODO Search for bar code
}
else {
this.state = "edit";
console.log("edit");
//TODO Search for Participant
}
}
}
angular.module('schwimmfestivalApp').controller('AnmeldungCtrl', AnmeldungCtrl);
})();
模板:
<div>
<input type="text" ng-model="query" >
<button ng-click="ctrl.searchUser(query)">Search</button>
{{query}}
</div>
配置文件:
'use strict';
angular.module('schwimmfestivalApp')
.config(function ($stateProvider) {
$stateProvider
.state('anmeldung', {
url: '/anmeldung',
templateUrl: 'app/anmeldung/anmeldung.html',
controller: 'AnmeldungCtrl',
controllerAs: 'ctrl'
});
});
正如我在标题中提到的,出于某种原因,控制器上的方法没有被调用。我不知道为什么。
在我的其他路线上它确实有效。
希望大家多多指教
提前致谢。
尝试仅使用 searchUser(query) 它可能会起作用,因为控制器已经添加,无需使用控制器调用该函数
好的,我让它工作了。这是我的错误(正如预期的那样)。我的一位同事在另一个路径中使用相同的标识符创建了一个 cnontroller。
所以 angular 如果发生这样的事情,不会抛出错误。因为第二个控制器位于较低的路径中,所以它位于原始控制器之后的 include 中。
感谢@MMhunter 在构造函数中放置了控制台输出。这不是在我的开发环境中打印的。所以我开始寻找原因,找到了第二个控制器。
感谢大家的帮助。