AngularJS-更新不同控制器上的数据

AngularJS-更新不同控制器上的数据,angularjs,Angularjs,我从这个框架开始。 我有一个关于从另一个控制器更新控制器的问题 我知道这个问题已经问过很多次了。 但这不是我的问题。 我可以用rootScope解决我的问题,但我不喜欢(我错了吗?) 这是我的例子: 我以为它会自动更新这部分代码: this.article = articleService.article; 我想在单击“阅读新闻”时更新我的PanelController。 你好吗? 最佳做法是什么?首先是示例中的几个小问题: 在以下HTML中: <a href="#" ng-click

我从这个框架开始。
我有一个关于从另一个控制器更新控制器的问题

我知道这个问题已经问过很多次了。 但这不是我的问题。
我可以用rootScope解决我的问题,但我不喜欢(我错了吗?)

这是我的例子:

我以为它会自动更新这部分代码:

this.article = articleService.article;
我想在单击“阅读新闻”时更新我的PanelController。
你好吗?

最佳做法是什么?

首先是示例中的几个小问题:

  • 在以下HTML中:

    <a href="#" ng-click="selectArticle(article.index)" class="btn btn-default">
        View news
    </a>
    
    这将把存储在
    articleService.article
    中的引用复制到
    This.article

    如果
    articleService.article
    持有对id为1的article对象的引用,
    this.article
    现在也持有对该对象的引用。然而,它们是两个不同的参考

    您有以下代码来设置所选项目对象:

    this.selectArticle = function(setArticle) {     
        articleService.article = articleService.articles[setArticle - 1];
    };
    
    现在,
    articleService.article
    将保存对另一个article对象的引用,例如id为2的对象。但是,
    PanelController
    中的
    this.article
    仍将保留对id为1的article对象的引用

    要实现您的目标,最简单的解决方案是在视图中使用原始的
    articleService.article
    引用,而不是创建它的副本

    面板控制器中

    this.articleService = articleService;
    
    在HTML中:

    <h1>{{panel.articleService.article.title}}</h1>
    <p>{{panel.articleService.article.content}}</p>
    
    {{panel.articleService.article.title}
    {{panel.articleService.article.content}


    演示:

    你说得对。避免使用$rootScope,这样您的代码可以是自包含的。关于你的答案,我正在等待。非常感谢。我尝试在视图中使用
    articleService
    。我想我可以访问
    articleService
    ,而无需在controller中定义。
    <h1>{{panel.articleService.article.title}}</h1>
    <p>{{panel.articleService.article.content}}</p>