2

假设我有一个如下所示的指令:

<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 传递)到指令中。只是当值被传递时,它被转换为字符串而不是保持布尔值。

4

1 回答 1

2

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

这个笨蛋说明了这一点。

于 2013-04-14T17:34:05.180 回答