无法从指令更新控制器变量

时间:2017-10-11 10:43:50

标签: angularjs

我有一个指令:

app.directive('hideButton', function () {
    return {
        restrict: "A",
        scope: {
            init: '='
        },
        replace : true,
        link: function(scope, elem, attrs) {
           if(scope.init) {
                elem.css('display', 'none');
                scope.init = false;
            }

            elem.on('click', function() {
                elem.css('display', 'none');
            });
        }
    }
});

这里,init是控制器变量。

现在在指令中我设置了scope.init = false,但更改没有反映到控制器中。

1 个答案:

答案 0 :(得分:2)

这是AngularJS中的常见问题,因为这只是不直观的。

如果将基本类型绑定到指令(在这种情况下为init的{​​{1}}),则绑定会丢失。尝试将其包装到对象中

boolean

在您的控制器中。

您的指令现在变为

{ value: true }

您的问题也在这里得到解答:https://stackoverflow.com/a/29265539/537738