如何为输入和文本区域编写指令

时间:2015-06-26 07:08:59

标签: angularjs angularjs-directive

我为输入焦点&编写了一个指令模糊

 angular
  .module('app')
  .directive('input', ['$filter', function($filter) {
    return function(scope, element, attrs) {
      if (element && element[0] && element[0].placeholder) {
        scope.placeholder = element[0].placeholder;
        element.bind("focus", function() {
          console.log(scope.placeholder);
          element[0].placeholder = "";
        });
        element.bind("blur", function() {
          element[0].placeholder = $filter('translate')(scope.placeholder);
        });
      }
    };
  }]);

我也希望文本区域具有相同的功能。但是,不想写另一个指令。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

 var myDirective = ['$filter', function($filter) {
     return {
       restrict: 'E',
       scope: true,
       link: function(scope, element, attrs) {
         if (element && element[0] && element[0].placeholder) {
            scope.placeholder = element[0].placeholder;
            element.bind("focus", function() {
            console.log(scope.placeholder);
            element[0].placeholder = "";
         });
         element.bind("blur", function() {
           element[0].placeholder = $filter('translate')(scope.placeholder);
         });
       }
     }
  };
}]

angular
  .module('app')
  .directive('input', myDirective);
  .directive('textarea', myDirective);

并在你的HTML中:

<input />
<textarea></textarea>