にのみ一致するディレクティブを作成したいと思います<input type="password"
。
コンパイルでこのタイプの入力が見つかったときはいつでも、ディレクティブを適用したいと思います。要素(余分なクラスまたは属性)に何も追加したくありません。
これは可能ですか?どうすればいいのですか?
解決:
angular.module('controls', [])
.directive('type',
function() {
return {
restrict: 'A',
compile: function(element, attributes) {
if (element.prop('nodeName') === 'INPUT' && attributes.type === 'password') {
return function link(scope, element, attributes, controller) {
element.on('keypress', function(event) {
var s = String.fromCharCode(event.which);
if (s.toUpperCase() === s && s.toLowerCase() !== s && !event.shiftKey) {
element.addClass('capslock');
} else {
element.removeClass('capslock');
}
});
};
}
}
};
});
.capslock {
background: #fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNWWFMmUAAAKUSURBVEhLrVbLahRBFK3ErhoNuHIlghsRBBE3vlAzVZMEN7pwoQtX6jcIKhiIuBAXfoCPlVs3IrhQEQSVBIIg+A5MvyaOqKjJqKC4Gc9tq6Wn+trdM5kDB4a+557TXXWre0QZukKMthpePdLycmTUo1DLdqRVhxga2Q6Neky1wHiatLatf9w8KlYFRh5HwAKCutUoF2ItT3TRa22qYbGuNsNgLm9YmfOhVlusXTFiXZvCci0zJv2yE4zXDlhbHpGpTSLsF9M8KH/6eABr34u4UdsEwZLTwBKDch03doWrucTSLjexRTbmL7ozYhSFJ1yDSwrDNI4Q0XOV0zCcowwbJwQm8RgjypHCZjKjT8cg1F6lUGScTJtGcOG5K3AZG3UtG5aCQnEOy5dXy7eUJfy6t5MVZPi/sBRVQ33t7ccxkOe5YsqysBSkKQ+VFwVEd/lifs/KkGxPQSj28QENTJMvqhv9hKWg0OTYcJ5GBgLFL2xRy0vvJsW6N3vF2vYhMfZQC8965kA10pD2NXrQf9r1IyLrK55QfeaKLgOjzlj/HGB0iutxmQRizSt9DYYTKH3awztc0eWQAu/jCdU0V3Q5jMDYyAsiaMjtXJHhygO1t4P09BJ+ygmyhOm5xJ0BPT3XkyU0z6xciJZWhzlRlrTX+OugbMs/vMQ1DN5trqeHWh2xLekLXN5jhb38jdX4gaf9nhC/6ZqjyZHeMMmLO4vWxJoNuNMPXMPKKD/6+1ZvtDG98Ce8XRB18k2DEavwDd/LPdaeRwufK5yX95xBX8RqLRpvt7UtRjQ+tr7qC4EjHXDaImtXHWg+CM5mzYqIJZynibftgyNuyK2YyLM0/rj7VzD/ZAfsBYbiVoxasy63WXkBhPgDAANrgFGFYP4AAAAASUVORK5CYII=) no-repeat right -10px center;
background-size: 16px 16px;
background-position: right 5px center;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app='controls'>
Type into second box with caps on or off and see what happens!
<br/>
<input type="text" />
<input type="password" id="search-box" ng-model="searchString" placeholder="text search" />
<p>{{searchString}}</p>
<div></div>
</body>
あなたはのためのディレクティブを追加してみてください可能性がtype
要素である場合、リンク機能を属性とだけ実行<input>
してtype
いる「パスワード」
.directive('type', function() {
return {
restrict: 'A',
compile: function(tElement, tAttrs) {
if (tElement.prop('nodeName') === 'INPUT' && tAttrs.type === 'password') {
return function postLink(scope, iElement, iAttrs, controller) {
// etc
};
}
}
};
})
ディレクティブが追加されますPlunkerデモ「赤」の要素にクラスを〜http://plnkr.co/edit/EurHOzKiloE6B0QQSwAY?p=preview
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加