如何在子控制器模板中访问父作用域变量?
我有子控制器(时间选择器),并希望通过父控制器更改子控制器下的按钮文本。如何使用父控制器修改子模板的值?
Plunker代码:https://plnkr.co/edit/WVFVTF7wKsGTgOrBfADB?p=preview
enter code here
答案 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));