首页 > 语言 > JavaScript > 正文

利用Angularjs中模块ui-route管理状态的方法

2024-05-06 15:04:05
字体:
来源:转载
供稿:网友

ui-router 的工作原理非常类似于 Angular 的路由控制器,但它只关注状态。

在应用程序的整个用户界面和导航中,一个状态对应于一个页面位置 通过定义controller、template和view等属性,来定义指定位置的用户界面和界面行为 通过嵌套的方式来解决页面中的一些重复出现的部位

最简单的形式

模板可以通过下面这种最简单的方式来指定

<!-- in index.html --><body ng-controller="MainCtrl"> <section ui-view></section></body>
// in app-states.js (or whatever you want to name it)$stateProvider.state('contacts', { template: '<h1>My Contacts</h1>'})

模板将被插入哪里?

状态被激活时,它的模板会自动插入到父状态对应的模板中包含ui-view属性的元素内部。如果是顶层的状态,那么它的父模板就是index.html。

激活状态

有三种方法来激活状态:

    调用$state.go()方法,这是一个高级的便利方法。 点击包含ui-sref指令的链接。 导航到与状态相关联的 url。

Templates 模板

可以通过下面几种方法来配置一个状态的模板。 方法一:配置template属性,指定一段 HTML 字符串,这人是设置模板的最简单的方式。

$stateProvider.state(<span class="hljs-string">'contacts'</span>, { template: <span class="hljs-string">'<h1>My Contacts</h1>'</span>})

方法二:配置templateUrl属性,来加载指定位置的模板,这是设置模板的常用方法。

$stateProvider.state(<span class="hljs-string">'contacts'</span>, { templateUrl: <span class="hljs-string">'contacts.html'</span>})

templateUrl 的值也可以是一个函数返回的url,函数带一个预设参数stateParams。

方法三:通过 templateProvider 函数返回模板的 HTML。

<span class="hljs-variable">$stateProvider</span>.state(<span class="hljs-string">'contacts'</span>, { templateProvider: <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">(<span class="hljs-variable">$timeout</span>, <span class="hljs-variable">$stateParams</span>)</span> </span>{ <span class="hljs-keyword">return</span> <span class="hljs-variable">$timeout</span>(<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">()</span> </span>{ <span class="hljs-keyword">return</span> <span class="hljs-string">'<h1>'</span> + <span class="hljs-variable">$stateParams</span>.contactId + <span class="hljs-string">'</h1>'</span> }, <span class="hljs-number">100</span>); }})            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选