如何在AngularJS指令`attrs`对象中使用hasOwnProperty

时间:2018-12-28 14:26:37

标签: javascript html angularjs angularjs-directive

我有一个名为ip-abc的指令,该指令用于检查字段的输入值并转换为美元格式的值。我有一个条件,如果我们将值设为“ 0”,则将其转换为$ 0。

ipabc.js

var filterFunc = function (value) {
    if(value == '0'){
    if(attrs.hasOwnProperty('ipZeroDollar')){
       var currencyValue = $filter('currency')(value);
       currencyValue = currencyValue.toString();
       return currencyValue.replace('.00','');
    } 
}

我面临的问题是,如何在HTML中设置ipZeroDollar = true。截至目前,(attrs.hasOwnProperty('ipZeroDollar'))即将以false的形式出现。

<div ng-class = {'//something'}
  <input type="tel" name="amount" class="form-control" ng 
   model="Data.Amount" maxlength="15" required ip-abc/>
</div>

2 个答案:

答案 0 :(得分:0)

这是您使用hasOwnProperty()的方式。

let obj = {color: 'yellow'}
obj.hasOwnProperty('color') // returns true

您似乎想在hasOwnProperty()上调用Data,因为这看起来像是一个对象,这就是您要获取金额的地方。

答案 1 :(得分:0)

  

我面临的问题是,如何在HTML中设置ipZeroDollar = true。截至目前,(attrs.hasOwnProperty('ipZeroDollar'))以假的形式出现。

camelCase需要在HTML中标准化为kebab-case

<input type="tel" name="amount" class="form-control"
       ng-model="Data.Amount" maxlength="15" required
       ip-abc  ip-zero-dollar />

有关更多信息,请参见

演示

angular.module("app",[])
.directive("ipAbc", function() {
    return {link: postLink};
    function postLink(scope,elem,attrs) {
      var hasIpZeroDollar = attrs.hasOwnProperty("ipZeroDollar");
      console.log("hasIpZeroDollar",hasIpZeroDollar);
    }
})
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="app"
    <input type="tel" name="amount" class="form-control"
           ng-model="Data.Amount" maxlength="15" required
           ip-abc ip-zero-dollar />
</body>