Angularjs 角度-更改为从父级继承的范围变量,而不更改父级中的变量

Angularjs 角度-更改为从父级继承的范围变量,而不更改父级中的变量,angularjs,Angularjs,我有一个父控制器,其中我初始化了范围变量x=false。在它引用的html中,我正在检查它的值以显示/隐藏元素。我还根据ng单击更改其值 在控制人内— $scope.x=false 在其html中- <div ng-if="x" ng-click="x= true"> <my-directive x="x"></my-directive> </div> 如您所见,我在其中也引用了一个指令,它将“x”变量继承到它的作用域中 指令定义

我有一个父控制器,其中我初始化了范围变量x=false。在它引用的html中,我正在检查它的值以显示/隐藏元素。我还根据ng单击更改其值

在控制人内—

$scope.x=false

在其html中-

<div ng-if="x" ng-click="x= true">

    <my-directive x="x"></my-directive>

</div>

如您所见,我在其中也引用了一个指令,它将“x”变量继承到它的作用域中

指令定义:

'use strict';
angular.module('myApp')
    .directive('srcCommmandBar', ['myService', myDirective]);


function myDirective(myService){
    return {
        restrict : 'E',
        scope : {x: "="},
        replace: false,
        transclude: false,
        templateUrl: '<button ng-click="x = false"></button>',
        link: function(scope, element, attrs){


        }

    };
}
“严格使用”;
angular.module('myApp')
.directive('srccommandbar',['myService',myDirective]);
函数myDirective(myService){
返回{
限制:'E',
作用域:{x:“=”},
替换:false,
排除:错误,
templateUrl:“”,
链接:函数(范围、元素、属性){
}
};
}
该指令的模板只是有一个按钮,当单击该按钮时,会将范围变量x的值更改为false


我的问题是,尽管它在子作用域“x”中更改,但它并没有更改父作用域“x”。我的理解是,由于双向绑定,x中的更改将级联到父级。我错了吗?如何使其工作?

您不应该将原始变量绑定到子范围。
您应该将其包装在对象中。
否则,更改子范围中的x值时,将丢失原始引用

-- templateUrl: '<button ng-click="x = false"></button>',  
++ templateUrl: '<button ng-click="x.value = false"></button>',
--模板URL:“”,
++templateUrl:“”,

不应将原始变量绑定到子范围。
您应该将其包装在对象中。
否则,更改子范围中的x值时,将丢失原始引用

-- templateUrl: '<button ng-click="x = false"></button>',  
++ templateUrl: '<button ng-click="x.value = false"></button>',
--模板URL:“”,
++templateUrl:“”,

根据文档,有一个$parent变量,因此我认为您应该能够使它与$parent.x一起工作。

根据文档,有一个$parent变量,因此我认为您应该能够使它与$parent.x一起工作。

阅读“点”。阅读“点”。谢谢。这很有道理,谢谢。这是有道理的。