加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – UI路由器多视图单控制器

发布时间:2020-12-17 07:52:47 所属栏目:安全 来源:网络整理
导读:是否可以有多个视图[ https://github.com/angular-ui/ui-router/issues/494]与单独控制器? 使用案例:我有一个ui-view = header和ui-view = content.我根据当前状态更改标题以显示上下文相关按钮(即返回,保存,过滤等)我希望这些按钮在内容控制器中调用函数,
是否可以有多个视图[ https://github.com/angular-ui/ui-router/issues/494]与单独控制器?

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

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

更新:基于@pankajparkar

我当前的index.html看起来像这样(为了理解而简化)

<nav ui-view="header"></nav>
<div ui-view="content"></div>

但您的建议将包含/ REQUIRE子视图

<!--index.html-->
<body ui-view></body>

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

使用以下控制器

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
    }
  }
});
你基本上需要在某种类型的提供者(通常是服务或工厂)处理这些东西,这些是单例,然后你可以将单例注入控制器,控制器的每个实例都将使用共享/相同的提供者.

如果您需要帮助实现这一点,请分享您的控制器.

虽然我同意这里发布的其他答案中的建议,但您可能想要考虑将功能放在提供程序中.在大多数情况下,您最好将大部分功能和数据存储在提供程序中,并让您的控制器负责传递用户交互以触发提供程序中的相应调用(并且它将解决您当前的问题,因为它们是单身).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读