Loading [MathJax]/jax/input/TeX/config.js
社区首页 >问答首页 >angularjs用户界面路由器-如何构建跨应用程序的全局主状态

angularjs用户界面路由器-如何构建跨应用程序的全局主状态
EN

Stack Overflow用户
提问于 2013-05-09 17:50:29
回答 3查看 47K关注 0票数 58
代码语言:javascript
代码运行次数:0
复制
<html ng-app="app">
<head>
...
</head>
<body>
  <div id="header"></div>
  <div id="notification"></div>
  <div id="container"></div>
  <div id="footer"></div>
</body>
</html>

与app的给定结构(派生自角-app):

  • 标题:在这里,站点导航,登录/退出工具栏等进来。这是动态的,有自己的控制器
  • 通知:全局通知容器。
  • 容器:这曾经是我的<ng-view>。因此,这是所有其他模块加载的地方。
  • 全球页脚。

州层次结构是什么样的?我已经看过这个例子,它显示了一个模块(联系人),但是通常一个应用程序会有一个全局(根)状态,而在根状态内,其他模块状态会呈现出来。

我想的是,我的app模块可能有root状态,然后每个模块都应该有自己的状态,我必须继承root状态。我说的对吗?

另外,从ui-state示例中,他们使用了$routeProvider$urlRouterProvider,以及$stateProvider定义的url。我的理解是$stateProvide也处理路由。如果我错了,我应该使用哪个提供者进行路由?

编辑http://plnkr.co/edit/wqKsKwFq1nxRQ3H667LU?p=preview

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-14 23:18:33

你在你的柱塞里所采取的方法是接近的。@ben的解决方案演示了如何为三个本质上是静态的视图在根状态设置默认值。柱塞中缺少的是您的子状态仍然需要引用顶部容器视图。

代码语言:javascript
代码运行次数:0
复制
   .state('root',{
      url: '',
      views: {
        'header': {
          templateUrl: 'header.html',
          controller: 'HeaderCtrl'
        },
        'footer':{
          templateUrl: 'footer.html'
        }
      }
    })
    .state('root.about', {
      url: '/about',
      views: {
        'container@': {
          templateUrl: 'about.html'
        }
      }
    });    

注意views: { 'container@': ...}而不是'root.about'中的templateUrl: ...

您可能还会问的是,您是否可以让模块定义自己的状态集,然后将其附加到应用程序的状态层次结构中。每一个模块提供的路由/状态的一种即插即用。

为了实现这一点,您将需要将模块紧密地耦合到您的主应用程序中。

在模块中:

代码语言:javascript
代码运行次数:0
复制
angular.module('contact', ['ui.router'])
  .constant('statesContact', [
      { name: 'root.contact',
        options: {
          url: 'contact',
          views: {
            'container@': {
              templateUrl: 'contacts.html'
            }
          },
          controller:'ContactController'
      }}
    ])
  .config(['$stateProvider', function($stateProvider){    
  }])

然后,在应用程序中:

代码语言:javascript
代码运行次数:0
复制
var app = angular.module('plunker', ['ui.router', 'contact']);
app.config(       ['$stateProvider', 'statesContact', 
           function($stateProvider,   statesContact){
    $stateProvider
    .state('root',{ ... })
    .state('root.home', { ... })
    .state('root.about', { ... })
    angular.forEach(statesContact, function(state) {
      $stateProvider.state(state.name, state.options);
    })      
}]);

这意味着您的所有模块将需要兼容这个模式在您的应用程序。但是如果你接受这个约束,你可以选择包含模块的任意组合,它们的状态神奇地被添加到你的应用程序中。如果您想获得更好的效果,可以在您的state.options.url循环中修改statesModuleName,例如,将模块的url结构作为前缀。

还请注意,只有当您从$routeProvider过渡到$stateProvider时,模块$stateProvider才是必需的。您通常应该使用ui.state代替。

也不要忘记在header.html $state.includes('root.contact')中进行调整)

更新柱塞

票数 53
EN

Stack Overflow用户

发布于 2013-05-12 08:21:43

虽然令人困惑,但ui路由器wiki中的常见问题似乎表明这是不可能的:ui-路由器/wiki/常见问题解答

一种方法是允许每个特性定义自己的根状态(如本例中的基于ui路由器的AngularJS状态管理)。

另一种方法是在"myApp“模块中定义整个状态层次结构,并仅利用依赖模块中的控制器等。当您维护一个移动和桌面站点时,这一点尤其有效;在mobileApp和desktopApp模块中定义每个站点的状态层次结构,并具有相应的功能(例如控制器、服务等)。共享在单独的模块中。

票数 5
EN

Stack Overflow用户

发布于 2013-05-11 04:56:32

这取决于你喜欢如何接近它。

所有作用域都是从rootScope继承的,因此您可以将全局状态放在那里。NG 文学作品特别提到,您只应该将全局状态放在那里,而不应该放在功能上。跨系统所需的功能属于服务,具体而言,您不应该实现其唯一目的是保留状态的服务。所有的建议似乎都被隐式地分享了,因为它如何方便或妨碍您轻松地进行端到端测试的能力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16473952

复制
相关文章
如何构建全局用户价值视角
二战时期,美国空军为了加强战斗机的保护措施,对参战飞机中弹区域进行了详细统计,结果显示如下图所示。机翼部位中弹最密集,而机舱部位最少中弹。军方决定对飞机机翼进行加固,但一名统计学家站出来反对。他表示真正需要加固的是机舱,因为机舱中弹的飞机大概率无法返航,才导致了这样的统计结果。最终军方采纳了他的意见,战斗机坠毁率果然降低。
TestOps
2022/04/07
3630
如何构建全局用户价值视角
如何使用 AngularJS 构建功能丰富的表格?
在 Web 开发中,表格是一种常见的数据展示方式。AngularJS 提供了强大的指令和服务,使得表格的创建和操作变得更加简单、高效。本文将详细介绍 AngularJS 中的表格相关知识,并演示如何使用 AngularJS 构建功能丰富的表格。
网络技术联盟站
2023/07/05
2930
0626-如何监控OpenLDAP主主同步状态
本篇主要介绍在OpenLDAP在实现主主同步后,如何监控服务之间主主同步状态,通过监控及时发现主主同步失败问题。
Fayson
2019/05/16
1.8K0
0626-如何监控OpenLDAP主主同步状态
构建现代化的跨平台移动应用程序
本文介绍了四个跨平台应用程序开发的框架和工具包,它们均具有跨平台、易于开发、支持组件化等特点。这些项目能够帮助开发人员快速构建漂亮、跨平台的应用程序,并且在开发过程中提供了很多便利。
小柒
2023/08/10
2410
构建现代化的跨平台移动应用程序
AngularJS跨域问题 ajax 跨域
从网上下载了一个AngularJS项目,配置启动后发现数据发送不到自己的后台中去,总是提示跨域问题。
战神伽罗
2019/07/24
3.8K0
AngularJS跨域问题 ajax 跨域
如何为你的应用程序或网站快速构建一个搜索界面
直观的搜索界面对于任何出色的在线体验都至关重要。但很多时候, 它们可能需要花费大量的精力来建造并保持
点火三周
2022/05/06
1.5K0
如何为你的应用程序或网站快速构建一个搜索界面
用于构建用户界面的JavaScript库--->React
现在我们使用开发工具打开我们刚刚下载的项目,大家可以使用 Webstorm , HBuilder X , Visual Studio Code 。我使用 Webstorm 。
叫我阿杰好了
2022/11/07
1.3K0
用于构建用户界面的JavaScript库--->React
如何构建可扩展的应用程序
所以你有一个很棒的主意。而且你有来自大学的朋友可以帮助你开始构建你的应用程序。您也可以从早期采用者那里获得很好的反馈。所以你做任何人都会做的事。启动你的应用!
February
2018/11/20
1.4K0
Django 通过中间件全局判断用户登录状态
要求是这样的,因为有些页面需要获取当前登录用户信息,如果没有登录的话会是匿名用户,就会报错。
SingYi
2022/07/13
8970
Django 通过中间件全局判断用户登录状态
如何构建用户画像
从1991年Tim Berners-Lee发明了万维网(World Wide Web)开始,到20年后2011年,互联网真正走向了一个新的里程碑,进入了“大数据时代”。经历了12、13两年热炒之后,人们逐渐冷静下来,更加聚焦于如何利用大数据挖掘潜在的商业价值,如何在企业中实实在在的应用大数据技术。伴随着大数据应用的讨论、创新,个性化技术成为了一个重要落地点。相比传统的线下会员管理、问卷调查、购物篮分析,大数据第一次使得企业能够通过互联网便利地获取用户更为广泛的反馈信息,为进一步精准、快速地分析用户行为习惯、
用户1756920
2018/06/20
2.6K0
Ionic用于构建跨平台移动应用程序的开源框架
Ionic框架和小程序容器技术可以结合使用,以在小程序平台上构建跨平台移动应用程序。通过将Ionic应用嵌套在小程序的WebView中或利用小程序桥接插件实现与小程序环境的通信,开发者可以在小程序平台上利用Ionic框架提供的跨平台开发能力和丰富的用户界面组件。这种结合为开发者提供了更多选择和灵活性,能够同时享受到Ionic框架和小程序平台的优势。 Ionic是一个用于构建跨平台移动应用程序的开源框架。它结合了HTML、CSS和JavaScript等技术,帮助开发者创建具有原生应用体验的移动应用程序。Ionic提供了一套用户界面组件和工具,可用于构建高度交互和美观的移动应用界面。
菜特鸡鼻涕
2023/06/25
3500
[干货]如何构建用户画像
从1991年Tim Berners-Lee发明了万维网(World Wide Web)开始,到20年后2011年,互联网真正走向了一个新的里程碑,进入了“大数据时代”。经历了12、13两年热炒之后,人们逐渐冷静下来,更加聚焦于如何利用大数据挖掘潜在的商业价值,如何在企业中实实在在的应用大数据技术。伴随着大数据应用的讨论、创新,个性化技术成为了一个重要落地点。相比传统的线下会员管理、问卷调查、购物篮分析,大数据第一次使得企业能够通过互联网便利地获取用户更为广泛的反馈信息,为进一步精准、快速地分析用户行为习惯、
用户1410343
2018/03/27
2.3K0
[干货]如何构建用户画像
AngularJS实现跨域请求
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
1.3K0
如何构建用户画像?
在《4个问题带你了解用户画像》中,我们了解了用户画像的定义、作用及使用注意事项等。
猴子数据分析
2021/08/11
2.1K0
如何构建用户画像?
在《4个问题带你了解用户画像》中,我们了解了用户画像的定义、作用及使用注意事项等。
猴子数据分析
2021/09/23
3.7K0
如何构建用户画像?
AngularJS实现cookie跨域
前后端分离被越来越多的公司重视利用,然后带来的最棘手的问题就是,用户信息应如何保存。
奋飛
2019/08/15
9990
如何构建Android MVVM应用程序
Databinding 是一种框架,MVVM是一种模式,两者的概念是不一样的。我的理解DataBinding是一个实现数据和UI绑定的框架,只是一个实现MVVM模式的工具。ViewModel和View可以通过DataBinding来实现单向绑定和双向绑定,这套UI和数据之间的动态监听和动态更新的框架Google已经帮我们做好了。在MVVM模式中ViewModel和View是用绑定关系来实现的,所以有了DataBinding 使我们构建Android MVVM 应用程序成为可能。   之前看了很多关于DataBinding的博客和相关的一些Demo,大多数就是往xml布局文件传入一些数据,然后把这些数据绑定到控件上( 如TextView binding:text=“@{user.name} ),接着在这些控件上(如Button binding:setOnClickListener="@{user.listener}") 设置一些事件到控件上,基本讲述都是DataBinding的基本用法。但是并没有人告诉你把一个onClickListener 写到一个类并把这个listener绑定到xml里面上是不是不太好,也没有人告诉你这个和xml布局绑定的ViewModel类应该放哪些数据,应该做什么事?应该如何设计?更是很少有博文来告诉你在Android 中如何通过Data Binding 去构建MVVM 的应用框架。这也就是是本篇文章的重点。接下来,我们先来看看什么是MVVM,然后在一步一步来设计整个应用程序框架。
developerHaoz
2022/05/13
1.3K0
如何构建Android MVVM应用程序
HTML5移动开发的10大移动APP开发框架
今天给大家介绍10款有关HTML5移动开发APP开发框架,这几款框架都是比较优秀的移动 Web 开发框架,能够帮助开发者更加高效的开发移动Web应用。.
全栈程序员站长
2022/06/24
6.6K0
HTML5移动开发的10大移动APP开发框架
用于H5的移动开发框架
今天给大家介绍10款有关HTML5移动开发APP开发框架,这几款框架都是比较优秀的移动 Web 开发框架,能够帮助开发者更加高效的开发移动Web应用。.
javascript艺术
2021/05/28
5.1K0
用于H5的移动开发框架
构建具有用户身份认证的 React + Flux 应用程序
React 的生态系统很大,为了解决 React 中比较困难的问题,你可以选择多种模块。大多数实际的 React 应用程序都有一些共同的需求,这些需求主要包括状态管理及路由。而解决这些需求最常用的是 Flux 及 React Router。
叙帝利
2018/07/31
11.6K0
构建具有用户身份认证的 React + Flux 应用程序

相似问题

AngularJS用户界面-路由器状态结构

12

用户界面路由器全局状态参数

15

angularjs用户界面路由器当前状态处于活动状态。

10

多嵌套状态AngularJS用户界面路由器

10

AngularJS用户界面-路由器状态不会遵循路由

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文