Angularjs 角度-更改为从父级继承的范围变量,而不更改父级中的变量
我有一个父控制器,其中我初始化了范围变量x=false。在它引用的html中,我正在检查它的值以显示/隐藏元素。我还根据ng单击更改其值 在控制人内— $scope.x=false 在其html中-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”变量继承到它的作用域中 指令定义
<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一起工作。阅读“点”。阅读“点”。谢谢。这很有道理,谢谢。这是有道理的。