Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Boostrap 3:点击按钮不';行不通_Javascript_Angularjs_Angularjs Ng Click_Ng Controller - Fatal编程技术网

Javascript Boostrap 3:点击按钮不';行不通

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(

我正在开发一个使用AngularJS和Twitter引导的web应用程序。我的应用在Firefox上运行良好,但在Chrome或Chrome(我的操作系统是Ubuntu)上,当我点击按钮时,并没有正确检测到这种点击。检测到单击,但对象事件为空或未检测到。如您所见,它只写入
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);
};