像ngularJS属性一样添加ng-click

时间:2015-08-05 12:53:36

标签: javascript jquery html angularjs

我想知道添加ng-click作为属性的方法吗?

如果我的ng-click有一个班级<li>,我想要添加someClass

angular.element(root.querySelector('li.someClass').attr({'ng-click': 'someFunc()'});

<li>有一个班级anotherClass时,我想重置ng-click:

angular.element(root.querySelector('li.someClass').attr({'ng-click': ''});

但它不起作用。

我无法在我的HTML中创建它:

<li class="someClass" ng-click="someFunc()"> ... </li>
<li class="anotherClass"> ... </li>

因为我的HTML是由ng-repeat动态生成的,而且还有一个指令会导致ng-hide混乱。

最佳解决方案是使用angular.element,但ng-click不是属性对吗?

(我可以在Visual Studio中调试代码,当我以某种方式ng-click添加<li ng-click="someFunc()">...</li>时,我无法在VS的Locals Window中找到它

3 个答案:

答案 0 :(得分:1)

检查处理程序函数中的类名,而不是重置ng-click

JS

$scope.someFunc = function (e) {

    if(angular.element(e.target).hasClass("someClass")){
        //code goes here
    };
}

HTML

<li class="someClass" ng-click="clickHandler($event)">Button</li>

答案 1 :(得分:0)

你无法真正切换ng-click,因为它是一个角度指令,但你可以像这样添加条件:

<li ng-click="someVar === true ? callOnMe() : ''">CLICK ME</li>

演示小提琴:http://jsfiddle.net/gnrL6cLw/

注意:将$scope.someVar更改为true即可查看提醒。

答案 2 :(得分:0)

没有看到您的ng-repeat代码,很难说 - 但是,如果我正确理解您的目标,我认为您可以ng-switch使用ng-switch-when实现你想要的输出:

<ul ng-repeat="item in items" ng-switch="item.someCondition">
    <li ng-switch-when="true" class="someClass" ng-click="someFunc()">...</li>
    <li ng-switch-when="false" class="anotherClass">...</li>
</ul>

这样它应该根据条件呈现要显示的列表项。当然,item.someCondition不必是布尔值 - 您可以匹配字符串,int或您喜欢的任何其他类型。