Directive属性强制boolean为string

时间:2016-10-21 17:55:41

标签: angularjs

我想将值传递给我的指令而不隔离其范围。

我的指令有一个链接函数来获取属性的值:

link: function(scope, element, attrs, ctrl) {

    scope.myAttributeValue = attrs.myAttribute;

}

我想做

<directive my-attribute="{{true}}"></directive>

当我将布尔值传递给my-attribute时,它会转换为字符串。

如何将布尔值传递给my-attribute

2 个答案:

答案 0 :(得分:1)

使用scope.$eval

app.directive("myDirective", function(){
    return function linkFn(scope,elem,attrs) {
        var x = scope.$eval(attrs.myDirective);
        console.log(x);
        console.log(typeof x);
    }
});

HTML

<div ng-app="myApp">
    <p my-directive="true"></p>
</div>

$eval() method将字符串计算为Angular Expression并保留该类型。

避免使用插值(双花括号{{true}}),因为它会将角度表达式转换为字符串。

有关详细信息,请参阅AngularJS $rootScope.Scope API Reference --$eval

DEMO on JSFiddle

答案 1 :(得分:0)

尝试将值与布尔值进行比较,值将以布尔值转换:

例如

scope.myAttributeValue = attrs.myAttribute == true;

console.log(typeof scope.myAttributeValue);
console.log(scope.myAttributeValue);

希望有所帮助!