I'm trying to modify the input
element using a custom AngularJS directive. Basically I want to replace any <input type="country">
fields with a country drop-down.
But the directive doesn't seem to work with input
fields. If I change it to any other tag, it works?
Here is the code:
angular.module('plunker', []) .controller('MainCtrl', function ($scope) { $scope.name = 'World'; }); angular.module('plunker') .directive('input', function() { return { restrict: 'E', scope: {ngModel: '=?'}, link: function(scope, elem, attr) { if(attr.type === 'country') { elem.html('html code for select'); alert(elem); } } }; });
<!doctype html> <html ng-app="plunker" > <head> <meta charset="utf-8"> <title>AngularJS Plunker</title> <link rel="stylesheet" href="style.css"> <script>document.write("<base href=\"" + document.location + "\" />");</script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> <script src="app.js"></script> </head> <body ng-controller="MainCtrl"> Name: <input type="country" ng-model="name"/> <br/> </body> </html>
Can someone please explain and suggest a workaround?
P.S. I've also tried doing this in the directive, but it doesn't work either!
replace: true, template:'<div>hello</div>'
P.S. I know I can use a ng-country
or some other custom tag but I want to change input
tag only because I want learn why this is happening or possibly find out what I'm doing wrong?