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

时间:2015-12-08 15:51:49

标签: angularjs

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

控制器内的

-

$ 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){


        }

    };
}

该指令的模板只有一个按钮,当单击该按钮时,会将范围变量x的值更改为false。

我的问题是虽然它在子范围“x”中发生了变化,但它并没有改变父范围“x”。我的理解是,由于双向绑定,x的变化将被级联到父级。我错了吗?我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

您不应将原始变量绑定到子范围 你应该将它包装在一个物体中 否则,当您更改子范围中的x值时,将丢失原始引用。

-- templateUrl: '<button ng-click="x = false"></button>',  
++ templateUrl: '<button ng-click="x.value = false"></button>',

答案 1 :(得分:0)

根据文档,有一个$ parent变量,所以我认为你应该可以使它与$ parent.x一起使用。