我不喜欢显示的解决方案的一个事情是在服务中使用jQuery有效地将旋转控件附加到DOM元素。我更喜欢使用角度构造来访问元素。我也想避免“硬编码”旋转器需要附加到服务内的元素的id,而是使用在服务(单例)中设置id的指令,以便服务的其他用户或服务本身不需要知道。
我正在努力与angular.element给我们什么document.getElementById在同一个元素id给我们。
例如。这工作:
var target = document.getElementById('appBusyIndicator');
这些都不:
var target = angular.element('#appBusyIndicator'); var target = angular.element('appBusyIndicator');
我显然做了一些应该是相当明显的错误!任何人可以帮助?
假设我可以得到上面的工作,我有一个类似的问题,试图替换jQuery访问的元素:
例如$(target).fadeIn(‘fast’);作品
angular.element(‘#appBusyIndicator’)。fadeIn(‘fast’)or angular.element(‘appBusyIndicator’)。fadeIn(‘fast’)does not
有人可以指点一个很好的例子,说明一个Angular“元素”与DOM元素的使用? Angular显然用自己的属性,方法等“包装”元素,但通常很难得到原始值。例如,如果我有一个< input type ='number'>字段,并且我想访问在用户键入“ – ”(没有引号)时在ui中可见的原始内容我没有什么,可能是因为“type = number”意味着Angular拒绝输入,即使它是可见的在UI中,我想看到它,所以我可以测试它,并清除它下来。
任何指针/答案赞赏。
谢谢。
var myElement = angular.element( document.querySelector( '#some-id' ) );
你将Document.querySelector()
native Javascript调用包装到angular.element()调用中。所以你总是获得一个jqLite或jQuery对象中的元素,取决于jQuery是否可用/加载。
Official documentation for angular.element
:
If jQuery is available,
angular.element
is an alias for thejQuery
function. If jQuery is not available,angular.element
delegates to Angulars built-in subset ofjQuery
,that called “jQuery lite” or jqLite.All element references in
Angular
are always wrapped with jQuery orjqLite
(such as the element argument in a directives compile or link function). They are never rawDOM
references.
如果你想知道为什么要使用document.querySelector(),请阅读this answer。