【问题标题】:What is the standard way to send messages between NgController and NgComponent in AngularDart?在 AngularDart 中的 NgController 和 NgComponent 之间发送消息的标准方式是什么?
【发布时间】:2014-01-28 20:23:10
【问题描述】:

我有一个控制器需要从组件中获取一些信息。每个都是通过 dom 由角度创建的。我了解组件会更新控制器提供的模型。通知控制器组件中的这些更改的角度方式是什么?

【问题讨论】:

    标签: dart angular-dart


    【解决方案1】:

    说您希望控制器收到有关组件更改的通知并不是考虑正在发生的事情的正确方法。

    在控制器中,某种类型的数据模型使用控制器的当前 $scope 表示并投影到视图。当 DOM 元素(我从您的术语中假设的组件)想要更新控制器提供的模型时,该模型通过指令(通常是 ng-model)绑定到组件。当该组件更改模型时,由于指令和数据绑定,数据会自动更新。

    【讨论】:

    • 正确 - 下一步是让控制器知道模型已更新。这样做的标准方法是什么?
    • 如果您的意思是根据范围值的变化触发其他操作,那么对该值进行监视将触发一个回调,其中包含 @marfarma 显示的新旧值。
    • 我最终通过不使用组件解决了这个问题。我只是将组件 html 放回我的主 html 并将组件代码拉出到常规类中。
    【解决方案2】:

    docs

    //$scope.$watch(<function/expression>, <handler>);
    
    $scope.$watch('foo', function(newVal, oldVal) {
        console.log(newVal, oldVal);
    });
    

    也很感兴趣:

    $scope.$on()
    $scope.$emit()
    $scope.$broadcase()
    $scopt.$watchCollection()
    

    【讨论】:

    • Dart 中的 Angular 也一样吗?
    • 非常相似。通常不需要使用范围,因为 AngularDart 使用控制器的设置器设置更改值。但是你列出的东西是可用的。
    • @GünterZöchbauer,我在尝试自己解决这个问题时遇到了问题,我使用 StreamController 将更新从组件推送到控制器。在实例化时订阅了流,但在事件(更新)时,流没有订阅者,但我的代码都没有删除订阅。我认为这是角度魔法。对此有什么见解吗?
    • @schellsan 您能否创建一个新问题并添加一些代码来演示您尝试完成的工作。
    • 是的,一旦我有时间,我会在这里链接它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2022-01-11
    • 2018-11-27
    相关资源
    最近更新 更多