【发布时间】:2015-12-05 05:59:45
【问题描述】:
示例
请考虑Plunkr。
我需要什么
我需要能够通过它的 id 获取一个元素。
示例代码应该能够将 css 类分配给当前视图中存在的任何 DOM 元素。
这应该使用控制器中的 $scope 提供的源对象进行检查。此源对象可能/将具有比视图上的输入元素更多的属性。
所以我想遍历每个对象键,看看是否存在对应的 DOM 元素。如果是这样,请验证它的价值。
问题
如何通过 id 获取元素,仅使用 AngularJS(不允许使用 jQuery!)?
特别是对于 Plunkr,我需要这个功能才能(真正)工作:
self.IsFieldCurrentlyActive = function(field){
// Should be (in pseudocode):
// var inputElement = angular.find(field);
// return (inputElement != 'undefined');
// Sample only
var idx = field.indexOf('Unused');
return idx == -1;
};
还有这个(基本一样):
self.GetElementByKey = function(key)
{
// Should be (in pseudocode):
// var inputElement = angular.find(field);
// return inputElement;
// Sample only
return null;
}
更新
抱歉,我忘记添加一个重要要求:我不能使用任何假定唯一 ID 的机制,因为可能会多次出现相同的表单(以及相同的 ID)。所以,我需要尊重 Angular 范围。
谢谢!
【问题讨论】:
-
你想达到什么目的?只需为元素分配一个类?
-
如果您需要在工厂或控制器中使用 dom 操作,我认为您做错了,请尝试查看 “Thinking in AngularJS” if I have a jQuery background?
-
正如@Grundy 所说,这不是有角度的做事方式。考虑控制器,DOM 操作的指令。
-
@Spikee 考虑使用 ng-class 有条件地将类分配给元素。检查docs.angularjs.org/api/ng/directive/ngClass
-
@Spikee - 您可以通过指令移动条件逻辑以服务和操作元素
标签: javascript css angularjs dom