我有一个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>
问题是,我需要访问ContentController
上ContentHeaderController
解析的对象。我发现他们没有共享父母范围:
ContentController:4
ContentController的父级:3
ContentHeaderController:6
ContentHeaderController的父级:5
如何将对象从内容视图传递到它的标题?
答案 0 :(得分:1)
控制器之间共享数据的问题可以通过使用事件(不推荐它)和使用服务作为模型来解决,这是建议的方法,因为您的数据将自动同步,您不会即将推出被弃用的API,例如$ broadcast。
这种方法的要点是将数据存储在对象中,而不仅仅是作为服务intself上的普通基元,然后将对象的引用传递给控制器,在控制器中它们绑定在模板中。使用代码示例检查此blog post关于模型模式。