1. 程式人生 > >angularjs ui-router 動態切換檢視到指定的ui-view中

angularjs ui-router 動態切換檢視到指定的ui-view中

任何 SPA 框架的路由系統都是一樣的:每一個路由對應著應用程式的狀態,而應用程式狀態的變化體現在 URLs 的變化上;反之也是,URLs 的變化將會引起路由系統動態的重新整理應用程式的狀態。

在你的例子,路由的入口只有恆定的一個 ui-view='content',但卻要不同的檢視(c.html 和 d.html)動態的進入其中,這就意味著 c.html 和 d.html 要對應應用程式的不同狀態,路由系統才可以據此而動態的更新。

假設你的例子是這樣的:

  • 當 /posts/show/c 的時候,ui-view='content' 顯示 c.html

  • 當 /posts/show/d 的時候,ui-view='content'

     顯示 d.html

於是我們才可以對應到 ui-router 裡面:

  • state 是 posts.show

  • 動態片段,即 URLs 中可變的部分,對應 state 裡的 url,我把它命名為 :name

  • view 的入口是 [email protected]

這樣便足以寫出絕大部分程式碼了:

angular.module('YourApp').config(function ($stateProvider) {

    $stateProvider.state('posts.show', {
        url: '/show/:name',
        views: {
            '
[email protected]
'
: { templateUrl: /* TODO */, controller: ... } } }); });

唯一剩下的問題是:當 :name 變化的時候,如何更新 templateUrl

之前說過的,URLs 的變化會引發路由系統更新應用程式的狀態,這些變化在路由系統中被儲存在 $params 物件中,我們可以用該物件提取變化的部分並生成正確的 templateUrl。在這裡我寫一個助手函式來做這件事情:

angular.module('YourApp'
).config(function ($stateProvider) { $stateProvider.state('posts.show', { url: '/show/:name', views: { '[email protected]': { templateUrl: getTemplateUrl, controller: ... } } }); function getTemplateUrl() { return: 'templates/posts/' + $params.name + '.html'; } });

ui-router 這個模組,templateUrl 不只是接收字串,也可以接收函式的返回值。於是你可以得到:

  • 當 /posts/show/c 的時候,templateUrl 是 templates/posts/c.html

  • 當 /posts/show/d 的時候,templateUrl 是 templates/posts/d.html

相應的,在你 index 裡的導航連結就要負責切換 /posts/show/:name 的變化,如何生成對應動態片段的連結在 ui-router 的文件裡有,自己去找來看吧。

相關推薦

angularjs ui-router 動態切換檢視指定ui-view

任何 SPA 框架的路由系統都是一樣的:每一個路由對應著應用程式的狀態,而應用程式狀態的變化體現在 URLs 的變化上;反之也是,URLs 的變化將會引起路由系統動態的重新整理應用程式的狀態。 在你的例子,路由的入口只有恆定的一個 ui-view='content',但

【vue.js】藉助vue-router實現切換檢視(元件)的demo

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" c

angularJs模組ui-router之狀態巢狀和檢視巢狀

狀態巢狀的方法 狀態可以相互巢狀。有三個巢狀的方法: 使用“點標記法”,例如:.state('contacts.list', {})使用parent屬性,指定一個父狀態的名稱字串,例如:parent: 'contacts'使用parent屬性,指定一個父狀態物件,例如

AngularJS學習之 ui router

ron span 登陸 也有 con 列表 tro 默認 blog 1.安裝 bower install --save angular_ui-router 2.在項目主頁面 index.html中添加 <div ui-view=""></ui-vie

AngularJS ui-router (嵌套路由)的簡單學習

size 鏈接 wid page 學習 pre template ava 頁面 今天讓我們一起來學習一下AngularJS裏的嵌套路由。   ui-router和同屬AngularJS框架一部分的ng-route一樣強大. ui-router提供了讓我們可以做路由

AngularJSui-router快速清除url引數

哈,好久不用AngularJS 檢視原始碼得知,https://cdn.bootcss.com/angular-ui-router/1.0.20/angular-ui-router.js 在老版本上也可以用,例如0.2.15版本,附送demo一隻~ <!D

AngularJS進階 一 深入理解ANGULARUI路由 UI-ROUTER

深入理解ANGULARUI路由_UI-ROUTER       最近在用 ionic寫個webapp 看到幾個demo中路由有好幾種,搞的有點暈,查下資料研究下,做個筆記,其中大部分為摘抄別人的,做個說明免得被人吐槽。 Angularjs&nbs

AngularJS路由之ui-router(二)

模組建立時新增模組依賴“ui.router” var app = angular.module('myApp', ['ui.router']);後就可以使用一個叫做$state的服務,使用$stateProvider來配置這個服務. $stateProvider和angu

AngularJS路由之ui-router(三)

一、為ui-router新增進度條 在使用動態控制器或者ajax,新增資料的時候需要進度條提示, 我們可以使用路由狀態的事件新增全域性進度條提示 $stateChangeStart: 當狀態開始改變時觸發 $stateChangeSuccess: 當狀態改變結束時觸發 二

第3篇:angularJS使用ui-router的巢狀路由配置

引入js檔案: <script type="text/javascript" src="lib/angular/angular-1.3.0.js"></script>

angularJS+ui-router+requireJS非同步載入controller、directive、filter

開發比較複雜的單頁面應用時,往往包括比較多的控制器、服務等,如果這些js檔案都在頁面開啟時就全部載入,往往載入量大,耗時長;因此,當開啟對應的頁面才載入響應的控制器等資源時,能一定程度地優化頁面載入速度。 · 專案目錄結構: · index.html:

AngularJsui.router路由基本配置及傳參方法

使用AngularJs可以方便的做出單頁面應用,既然是應用,那就涉及到頁面跳轉的問題,使用Angularjs的路由外掛可以方便的使用路由功能,而且可以傳參非常容易。程式碼如下:路由外掛:angular-ui-router.js。檔案:index.html01<!DOCT

AngularJs ui-router 路由的簡單介紹

以上程式碼修飾了“views”直接通過state的名稱繫結完對應的頁面模板。 state(name,stateConfig); 註冊一個狀態,並給定其配置。 引數: name:狀態的名稱。 stateConfig:狀態配置物件。配置具有以下各項屬性: template: string/func

2、Angular-Ui Router 巢狀狀態和巢狀檢視

Methods for Nesting States巢狀狀態的方法States can be nested within each other. There are several ways of nesting states:狀態可以相互巢狀,巢狀狀態有幾種方法:Using

AngularJS ui-router (巢狀路由)

  我們都知道,如果使用原生路由的話,Angular的檢視是通過ng-view這個指令進行載入的。比如這樣:<div ng-view></div>。一般,我們都會把這個指令放在index.html這個檔案裡面,然後,通過控制器來載入相應的模板檢視。比

第26篇:AngularJS+ui-router實現一個超簡單的登陸和跳轉的二級路由demo

1.頁面結構介紹: 1)index.html:頁面入口檔案; 2)views資料夾下: login資料夾下:登陸頁面和對應控制器; home資料夾下: home.html/home.js:二級路由頁面和對應的控制器 adv/list資料夾:二級頁面和對應的控制器檔案 3)

深究AngularJS——ui-router詳解

1.配置使用ui-router 1.1匯入js檔案 需要注意的是:必須匯入angular.min.js這個檔案,且angular.min.js必須匯入在angular-ui-router.min.js前面。 <script type="text/ja

angular-ui-router檢視views

UI Router 中有三種方式啟用一個路由: (1)$state.go():優先順序較高的便利方式 (2)ui-sref:點選包含此指令跳轉 (3)url:url導航 一、$state.go() (1)$state.go(to [, toPa

AngularJS學習筆記--002--Angular JS路由外掛ui.router原始碼解析

路由(route),幾乎所有的MVC(VM)框架都應該具有的特性,因為它是前端構建單頁面應用(SPA)必不可少的組成部分。 那麼,對於angular而言,它自然也有內建的路由模組:叫做ngRoute。 不過,大家很少用它,因為它的功能太有限,往

AngularJS路由之ui-router(一)

在angular1有內建的路由服務,使用$route可以幫助實現路由的切換,檢視的改變,但是$route只是包含了基本的功能,在很多場合不夠用。 uiRouter是第三方js庫。需要引入“angular-ui-router.min.js”檔案。 在Asp.Net中引入