【问题标题】:What is the difference $scope.$parent vs $broadcast?$scope.$parent 与 $broadcast 有什么区别?
【发布时间】:2018-06-03 09:40:26
【问题描述】:

$scope.$parent$broadcast 有什么区别?

【问题讨论】:

    标签: angularjs inheritance angularjs-scope broadcast prototypal-inheritance


    【解决方案1】:

    一切都不一样。他们根本没有关系。两个完全不同的东西——甚至不是相同的 JavaScript 类型。

    $scope.$parent 是对父作用域对象的引用,而$broadcast 是广播事件的函数。

    【讨论】:

    • 要清楚我有两个嵌套的控制器。控制器 A(父) 控制器 B(子)
      {{name }}
      -----script----- CtrlB{ $scope.$parent.buttonevent=function(){ $scope.name="AngularJs" } } 就是上面的场景可能吗?
    • 要清楚我有两个嵌套的控制器。控制器 A(父) 控制器 B(子)
      {{name }}
      -----script----- CtrlB{ $scope.$parent.buttonevent=function(){ $scope.name="AngularJs" } } 就是上面的场景可能吗?
    • 是的,这应该是可能的。不过我建议不要这样做,因为子组件/控制器不应该以任何方式依赖于它们的父组件。以上导致与父级的紧密耦合,使得子级的重用变得困难。例如,在您的示例中,子控制器必须知道父控制器有一个名为buttonevent 的函数。这是不可取的。
    • 那么实现这种场景的解决方案是什么?
    • 看看角度组件和单向绑定的概念。这应该会指导您找到解决方案。
    【解决方案2】:

    基本上我正在编写一个通用布局。 在通用布局中,开发人员将使用 ui-view 编写代码。通用布局在触发时会有按钮事件,它应该改变嵌套的 ui-view 的状态。

    为此,如果我使用我认为我无法实现的组件,因为

    顶部框架(按钮、标题等) Body-developer-这部分是一个ui-view 底部框架(边框结束和一些样式)

    所以对于框架,我将拥有控制器 因此,当触发框架中的任何更改时,也应该触发开发者模板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      相关资源
      最近更新 更多