布尔范围指令的价值

时间:2013-04-14 17:15:41

标签: angularjs angularjs-directive

假设我有一个看起来像的指令:

<foo-bar bar-foo="booleanValue"></foo-bar>

booleanValue这里属于父作用域 - 控制器的作用域,它附加到上述指令元素所在的视图中。

现在,在我的指令中,我已经将指令定义如下:

app.directive('fooBar', function() {
    return {
        restrict: 'E',
        scope: {
            barFoo: '=barFoo'
        },
        link: function(scope, iElement, iAttrs) {
           scope.$watch('barFoo', function() {
               if(scope.barFoo !== true) return;
           });
           //Code to execute when barFoo is true
        }
    };
});

这里的问题是传递给barFoo的值是一个布尔值,但它最终是一个字符串值。因此`if(scope.barFoo!== true)将始终成功,并且链接器函数永远不会执行。

我不想将代码更改为if (scope.barFoo === "true")

如何将布尔值传递到范围?

编辑:我希望在此添加booleanValue确实是父控制器对指令的布尔值(通常为true)。只是当值传递时,它会转换为字符串而不是保留布尔值。

1 个答案:

答案 0 :(得分:2)

假设在控制器中正确设置了值,它应该作为布尔值传递给指令。

plunker说明了这一点。