使用angular指令更改属性值

时间:2016-12-22 17:16:50

标签: angularjs

所以我想要的是传递输入的maxlength属性的变量

  <input my-dir="maxLenght" id="inputScannedCode"
         type="text" ng-model="ScannedCode" maxlength="20"
         class="form-control orange-shadow" 
         required placeholder=" Scan the code " />

所以我希望输入的长度从常量设置以保持一致性。

所以我创建了一个自定义指令,以便更改maxlength值。

.directive('myDir', function () {
    return {
        restrict: 'A',
        scope: {
            myDir: '='
        },
        template: '<div>{{myindex}}</div>',
        link: function (scope, element, attrs) {
            //console.log(attrs);
            //attrs.maxlength = scope.myDir.toString();
            //attrs.placeholder = scope.myDir.toString();            
        }          
    };
})

确实这会改变我的maxlength值,但它会在编译后发生,但是当我检查我的元素时,它仍会显示maxlengh =&#34; 20&#34;。

任何想法我需要做什么?

2 个答案:

答案 0 :(得分:1)

使用插值:

  <input my-dir="maxLenght" id="inputScannedCode"
         type="text" ng-model="ScannedCode" 
         maxlength="{{maxLenght || '20'}}"
         class="form-control orange-shadow" 
         required placeholder=" Scan the code " />

$ compile服务将创建一个观察程序,每次Angular表达式更改时都会更新maxlength属性。

答案 1 :(得分:0)

  1. 您可能需要在链接函数中使用scope.eval对其进行编译,以便在您在链接函数中使用它时检索您的值

    attrs.myDir = scope。$ eval(attrs.myDir);`

  2. 你永远不会在输入上设置maxLength属性:你可以使用ng-maxlength:{angular documentation)这是它不更新的主要原因

    <input my-dir="maxLenght" ng-maxlength="maxLength" id="inputScannedCode" type="text" ng-model="ScannedCode"  class="form-control orange-shadow" required placeholder=" Scan the code " />
    
  3. 在你的例子中,你也拼写错误&#34; maxLength&#34; as&#34; maxLenght&#34;