使用Angular' s uiRouter将对象传递给子uiView

时间:2015-08-26 14:05:47

标签: angularjs angular-ui-router

我有一个Angular应用程序,我在其中使用uiRouter单独视图创建页面标题:

路线配置:

$stateProvider.state('content', {
    url: '/content/{idContent}',
    views: {
        'header@content': {
            templateUrl: 'templates/content/header.partial.html'
        },
        'mainContent': {
            templateUrl: 'templates/content/index.html'
        }
    }
});

内容模板:

<section ng-controller="ContentController">
    <div ui-view="header"></div>
    {{Here I display the content}}
</section>

标题模板:

<section ng-controller="ContentHeaderController">
    {{Here I render the header}}
</section>

问题是,我需要访问ContentControllerContentHeaderController解析的对象。我发现他们没有共享父母范围:

  

ContentController:4

     

ContentController的父级:3

     

ContentHeaderController:6

     

ContentHeaderController的父级:5

如何将对象从内容视图传递到它的标题?

1 个答案:

答案 0 :(得分:1)

控制器之间共享数据的问题可以通过使用事件(不推荐它)和使用服务作为模型来解决,这是建议的方法,因为您的数据将自动同步,您不会即将推出被弃用的API,例如$ broadcast。

这种方法的要点是将数据存储在对象中,而不仅仅是作为服务intself上的普通基元,然后将对象的引用传递给控制器​​,在控制器中它们绑定在模板中。使用代码示例检查此blog post关于模型模式。

相关问题