我想知道添加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
中找到它
答案 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或您喜欢的任何其他类型。