从多个控制器更新页面部分的最佳方式

Best way to update parts of a page from multiple controllers?

本文关键字:最佳 方式 面部 控制器 更新      更新时间:2023-09-26

我有一个包含2个控制器的网页(使用AngularJS(。第一个管理导航栏和页面标题。第二个控制器管理消息(或页面的任何其他部分(。用给定的字符串"通知"第一个控制器更新页面标题的最佳方式是什么?

使用事件消息,点击导航栏上的按钮将触发emit((,在第二个控制器中注册了on((的事件处理程序将响应触发器。

$rootScope$emit((和$rootScope$on((

使用$scope$emit和$scope$在上

请注意,它在rootscope上调用emit/on,所有子级都可以在其上发布sub。

我过去所做的就是使用控制器作为语法。然后,我可以将第一个控制器标题对象传递到第二个控制器中,并在那里更新它,而无需广播消息。

Controller1 as c1
Controller2 as c2 
c2.functionThatUpdatesC1(c1.title, data) 
this.functionThatUpdatesC1 = function (c1Object, data) {
    //Do something here 
    c1Object = newValue;
};