访问子控制器模板中的父范围变量 - Angular

时间:2017-02-15 19:37:41

标签: angularjs bootstrap-datetimepicker

如何在子控制器模板中访问父作用域变量?

我有子控制器(时间选择器),并希望通过父控制器更改子控制器下的按钮文本。如何使用父控制器修改子模板的值?

Plunker代码:https://plnkr.co/edit/WVFVTF7wKsGTgOrBfADB?p=preview enter code here

1 个答案:

答案 0 :(得分:1)

子视图可以自动访问$ scope属性。只要像往常一样访问它们。

修改父属性稍微多一点困难"。我建议使用setter来修改父级的属性。如果您像往常一样修改它(通过简单地指定一个值),它将使用新值创建一个本地范围的副本,而不是修改父项上的现有副本。

在您的父控制器上执行以下操作:

$scope.myValue = "foo";
$scope.changeMyValue = function (value) {
    $scope.myValue = value;
}

然后从您的子控制器调用changeMyValue方法。

如果你想修改子属性,我会建议事件。

在父控制器中执行此操作以触发事件:

$scope.$broadcast('myEventName', myValue);

您可以通过以下方式在您的孩子控制器上接收活动:

$scope.$on('myEventName', (event, value) => handleEvent(value));