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);
});
}
}
});