gpt4 book ai didi

angularjs - UI-Router 多 View 单 Controller

转载 作者:行者123 更新时间:2023-12-04 08:43:18 24 4
gpt4 key购买 nike

是否可以有多个 View [ https://github.com/angular-ui/ui-router/issues/494]使用单例 Controller ?

用例:我有一个 ui-view=header 和 ui-view=content。我根据当前状态更改标题以显示上下文相关按钮(即返回、保存、过滤等)我希望这些按钮调用内容 Controller 中的函数,但如果我执行以下操作,它会创建两个 MyController 对象.如果有任何初始化函数,它们会被调用两次,这在大多数情况下是对我的服务器的查询的两倍。

views:{
'header':{
templateURL:'...',
controller:'MyController'
},
'content':{
templateURL:'...',
controller:'MyController'
}
}

更新:基于@pankajparkar

我当前的 index.html 看起来像这样(为理解而简化)
<nav ui-view="header"></nav>
<div ui-view="content"></div>

但是您的建议将包括/需要 subview
<!--index.html-->
<body ui-view></body>

<!--format.html-->
<nav ui-view="header"></nav>
<div ui-view="content"></div>

使用以下 Controller
state('app', {
url: '/app',
controller: 'MyController',
templateURL: 'format.html', //Targets ui-view in index.html
views:{
'header':{
templateURL:'...', //Targets ui-view="header" in format.html
},
'content':{
templateURL:'...', //Targets ui-view="header" in content.html
}
}
});

最佳答案

您基本上需要在某种提供者(通常是服务或工厂)中处理这类东西,这些提供者是单例,然后您可以将单例注入(inject) Controller ,并且 Controller 的每个实例都将使用共享/相同的提供者。

如果您需要帮助实现此功能,请分享您的 Controller 。

尽管我同意此处发布的其他答案中的建议,但您可能需要考虑将功能放在提供程序中。在大多数情况下,您最好将大部分功能和数据保存在提供程序中,并让您的 Controller 只负责传递用户交互以触发提供程序中的适当调用(这将解决您当前的问题,因为它们是单例)。

关于angularjs - UI-Router 多 View 单 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com