gpt4 book ai didi

javascript - 如何连接 angularjs jqlite 的结果?

转载 作者:行者123 更新时间:2023-11-29 19:18:23 29 4
gpt4 key购买 nike

我正在研究一个指令,该指令将基于 rootScope 变量禁用页面上的所有表单元素(类似于手动将 ng-disabled 添加到每个项目,但只是一种更方便的方法。我正在修改现有的应用程序,不想挖掘一堆模板)

我需要能够连接多个 jqlite .find() 语句的结果。 jqlite 似乎不支持 .find('select,input') 之类的调用。我总是得到一个空数组。此外,由于它返回对象,我不能只连接它们。我可能会因此而受到打脸,但我求助于你,StackOverflow。

var myApp = angular.module('myApp',[]);

myApp.directive('disableContents', function() {
return {
compile: function(tElem, tAttrs) {
var inputs = tElem.find('input');
var selects = tElem.find('select');

var formItems = SOMETHINGTOJOINTHESTUFFABOVE
angular.forEach(formItems, function(el){
...

这是我到目前为止的想法,但是让我烦恼的是有多个 foreach 语句。

'use strict';
angular.module('induction').directive('sttiDisabled', function() {
return {
compile: function(tElem, tAttrs) {
var inputs = tElem.find('input');
var selects = tElem.find('select');

var applyDisable = function(el) {
el = angular.element(el);
var prevVal = el.attr('ng-disabled');
prevVal = prevVal? prevVal + ' || ': '';
prevVal += tAttrs['sttiDisabled'];
el.attr('ng-disabled', prevVal);
}

angular.forEach(inputs, function(el){
applyDisable(el);
});

angular.forEach(selects, function(el){
applyDisable(el);
});


}
}
});

最佳答案

jqLit​​e ( angular.element ) 确实不支持复杂的选择器,因此您必须首先使用 querySelectorAll 选择您需要的所有内容然后用 angular.element 实例包装这个集合:

var formControls = angular.element(tElem[0].querySelectorAll('input, select'));

关于javascript - 如何连接 angularjs jqlite 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34181220/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com