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

Angularjs 无法从指令更新控制器变量,angularjs,Angularjs,我有一个指示: app.directive('hideButton', function () { return { restrict: "A", scope: { init: '=' }, replace : true, link: function(scope, elem, attrs) { if(scope.init) { e

我有一个指示:

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
,但是更改没有反映到控制器中。

这是AngularJS中的一个常见问题,因为这是不直观的

如果将基元类型绑定到指令中(
init
,在本例中为
boolean
类型),绑定将丢失。试着把它包装成一个对象

{ value: true }
在你的控制器里

您的指令现在变为

if (scope.init.value) {
    elem.css('display', 'none');
    scope.init = false;
}

这里也回答了您的问题:

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

如果将基元类型绑定到指令中(
init
,在本例中为
boolean
类型),绑定将丢失。试着把它包装成一个对象

{ value: true }
在你的控制器里

您的指令现在变为

if (scope.init.value) {
    elem.css('display', 'none');
    scope.init = false;
}
这里也回答了你的问题: