【问题标题】:Call directive for conditionally added attribute有条件添加属性的调用指令
【发布时间】:2014-12-15 09:59:29
【问题描述】:

如果有条件地在元素上添加属性,我想调用指令,但我没有得到任何解决方案。

HTML

    <input type="text" max-length="{{max_length}}" myElement/>

下面是指令

App.directive('maxlengthCounter', function($compile, $parse) {

return {
    require : 'ngModel',
    scope : {},
    link : function(scope, element, attrs, ngModel) {
        var maxLength = parseInt(attrs.maxLength);

        if (maxLength) {
            element.bind("keyup", function() {
                var value = element[0].value;
                element.val(value.substr(0, maxLength));            

            });
            }  

    }
    };
    });

并有条件地在元素上添加一个属性

App.directive('myElement',function(){
return {
restrict:"A",
    scope : {},
    link : function(scope, element, attrs, ngModel) {
  (attrs.max_length>0?angular.element(element).attr("maxlength-  
 counter",""):'');
  $compile(element.html())(scope);
  }
  });

【问题讨论】:

  • 显示一些代码,你尝试了什么?
  • 实际上我已经创建了一个指令并有条件地在元素上添加了一个属性,然后指令不会被调用..但是如果我静态添加属性然后指令被调用
  • 再次发布您的代码。
  • 现在,提供解决方案..

标签: angularjs angularjs-directive


【解决方案1】:

您的代码对条件调用指令很好,但您的代码中有各种错误

  1. &lt;input type="text" myElement 应该是my-element

  2. (attrs.max_length &gt; 0 应该是maxLength

  3. 你为什么要做element[0].children[0][index]??随便你用element[0]

这是工作的Demo

【讨论】:

  • 给出的demo没有根据提供的值限制文本的长度
猜你喜欢
  • 2016-09-26
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 2016-05-22
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多