Javascript Boostrap 3:点击按钮不';行不通
我正在开发一个使用AngularJS和Twitter引导的web应用程序。我的应用在Firefox上运行良好,但在Chrome或Chrome(我的操作系统是Ubuntu)上,当我点击按钮时,并没有正确检测到这种点击。检测到单击,但对象事件为空或未检测到。如您所见,它只写入Javascript Boostrap 3:点击按钮不';行不通,javascript,angularjs,angularjs-ng-click,ng-controller,Javascript,Angularjs,Angularjs Ng Click,Ng Controller,我正在开发一个使用AngularJS和Twitter引导的web应用程序。我的应用在Firefox上运行良好,但在Chrome或Chrome(我的操作系统是Ubuntu)上,当我点击按钮时,并没有正确检测到这种点击。检测到单击,但对象事件为空或未检测到。如您所见,它只写入evento:,而不写入id。在Firefox中,它正确地写入evento:和id HTML: <button id = "removeLeftTables" ng-click = "hmCtrl.changeView(
evento:
,而不写入id
。在Firefox中,它正确地写入evento:
和id
HTML:
<button id = "removeLeftTables" ng-click = "hmCtrl.changeView($event)">
<span class="glyphicon glyphicon-remove " aria-hidden="true" style = "vertical-align: middle; font-size: 25px"></span>
</button>
self.changeView = function(event){
console.log("evento: " + event.target.id);
if (event.target.id == "removeLeftTables"){
self.show_left_tables = false;
self.style_left_content = "";
self.style_right_content = "";
self.style_tables_content = "";
self.cleanTabStyles();
}
if (event.target.id == "removeRightTables"){
self.show_right_tables = false;
self.style_right_content = "";
self.style_left_content = "";
self.style_tables_content = "";
self.cleanTabStyles();
}
}
我使用相同的代码制作了这个plunker来检查错误,它可以工作:
我什么都不懂。为什么它不能在我的web应用程序中工作,而在plunker中工作良好?发生了什么事
编辑1:
我的目标是在我做了一个clic之后获得对象的id。使用Firefox、Chrome和Chrome。现在,只有Firefox才能检索事件的id。使用Chrome和Chrome时,事件由触发,我无法从对象事件中检索id
编辑2:
我已经在我的代码中添加了一个跟踪,以了解事件变量是否为null,当我点击Chrome o时,Chrome事件变量是否为null,但未检测到id
$scope.changeView = function(event){
if (event == null)
console.log("event is NULL");
else
console.log("event IS NOT NULL");
console.log("evento: " + event.target.id);
if (event.target.id == "removeLeftTables"){
self.show_left_tables = false;
self.style_left_content = "";
self.style_right_content = "";
self.style_tables_content = "";
self.cleanTabStyles();
}
if (event.target.id == "removeRightTables"){
self.show_right_tables = false;
self.style_right_content = "";
self.style_left_content = "";
self.style_tables_content = "";
self.cleanTabStyles();
}
}
看看fixed fiddle: 在常见情况下,您应该在控制器中使用
$scope.checkClick()
,而不是使用此。checkClick()
:
在html中调用方法(如ctrl.methodName()
)是没有意义的
您只需执行以下操作:
<button ng-click = "checkClick('Button Clicked!!!')">
仅允许在服务
中使用此选项。
即使在工厂中
也不应该使用此
(使用返回{a:…,b:function(){…}
语法
在控制器或指令中,您应该使用
$scope
(或scope
用于指令)为html提供方法您可以尝试通过currentTarget
而不是target
。因为currentTarget
获取事件侦听器触发特定事件的元素
self.changeView = function(event) {
console.log("evento: " + event.currentTarget.id);
};
它可能会帮助您OP使用控制器作为(别名)
此
将引用控制器的语法,控制器中附加到此
的任何函数或变量都应该可以使用别名从视图中访问。谢谢Sergey!!!但我的目标是检测事件,即使我做了您发布的更改,也不会检测到该事件。通过您的更改,Firefox可以工作很好,但在Chrome或Chromium中不起作用:(Yeeeeeees!!!!它在Firefox、Chrome和Chromium中都很好!!!非常感谢您的帮助!!!
self.changeView = function(event) {
console.log("evento: " + event.currentTarget.id);
};