2016-04-04 98 views
0

我將獲取文本框中的字母數,並將其顯示在div標籤中,該標籤由element指令顯示。在Angularjs自定義指令中獲取屬性的值

<input type="text" ng-model="name"> 
    <div counter-directive max-length="100" ng-model="name"></div> 

div標籤必須表現出這樣的事情:12/100(12就是我們在輸入輸入和100的最大長度值)

的問題是,我不知道如何獲得最大長度的值。

here我對的jsfiddle

回答

3

的例子Firsly,請檢查拼寫。您在問題中使用過lenght幾次。

您可以從傳遞到link函數的attrs對象中獲得max-length屬性。

link: function (scope, element, attrs) { 
    var foo = attrs.maxLength; 
} 
1

你只需要做到這一點:

app.directive('counterDirective', function() { 

return { 

    restrict: 'A', 
    require: 'ngModel', 
    scope: { maxLength:'=', ngModel:'&' }, 
    link: function (scope, element, attrs) { 

      console.log(scope.maxLength); 

     scope.$watch(scope.ngModel, function (value) { 

      if (value) { 

       var newValue = value.length; 
       console.log(value); 
       element[0].innerText = newValue; 
      } 
     }); 

    } 
} 

});

我認爲你必須用'length'來代替'lenght':)

+0

感謝您的回答。但爲什麼範圍。當ngModel得到改變時$ watch不再工作? –

+0

它適用於我,這裏是一個plunker,它在你每次更改你的ngModel時在你的指令中顯示新的值。 https://jsfiddle.net/09nw12kc/7/ – Sparw

+1

對不起,我沒有理解你的問題。我更新了笨重的,現在它正常工作:) https://jsfiddle.net/09nw12kc/9/ – Sparw

相關問題