[AngularJS] Introduction to ui-router

本文介绍了AngularJS中ui-router的使用方法,包括如何配置状态(state)、路由(url)以及嵌套路由等核心概念。通过实例展示了如何利用ui-router进行页面跳转和内容展示。

Introduce to basic $stateProvider.state() with $stateParams services. Understand how nested router works.

 

Key Value:

ng-href="#/list/{{item.name}}"
.state('list.item', {
                url: '/:item',
                templateUrl: 'templates/list.item.tmpl.html',
                controller: 'ItemCtrl',
                controllerAs: 'item'
            })
ui-sref="list.item({item: item.name})"

the same as 

ui-sref=".item({item: item.name})" <!-- ui.route understand to find the parent router-->

 

 

Note: we can put template into a spreated html, here we just put inside index.html and use type to define it.

script type="text/ng-template"

<!DOCTYPE html>
<html ng-app="app">
<head>

    <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css"/>

    <script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.11/angular-ui-router.js"></script>
    <meta charset="utf-8">
    <title>JS Bin</title>
</head>
<body>
<div class="container">
    <h4>
        A brief introduction to <strong class="text-danger">ui-router</strong>
        <span class="text-muted">(v0.2.0)</span>
    </h4>

    <div>
        <ul class="nav nav-pills">
            <li><a ui-sref="home">Home</a></li>
            <li><a ui-sref="list">Shopping List</a></li>
        </ul>
    </div>
    <div ui-view></div>
</div>

<script type="text/ng-template" id="templates/home.tmpl.html">
    <div class="row">
        <h3>What is ui-router?</h3>

        <p>URL routing is a popular approach to matching the contents of a URL to specific functionality within a web
            application. URL routes programmatically present specific content to users based on the URL that they are
            visiting. It is a popular approach that has proven to be very effective.</p>

        <P>Something that might not be obvious is that URL routing is also a finite state machine. When you configure
            the routing for an app, you are laying out the various states the application can be in, and informing the
            application what to display and do when a specific route is encountered.</P>

        <p>AngularJS supplies URL routing by default. It is adequate, but also has some limitations.</p>
    </div>
</script>

<script type="text/ng-template" id="templates/list.tmpl.html">
    <div class="row padded">
        <div class="list-group col-xs-3">
            <a class="list-group-item"
               ng-repeat="item in list.shoppingList"
               ng-class="{active: item.selected}"
               ng-href="#/list/{{item.name}}"
               ng-click="list.selectItem(item)">{{item.name}}</a>
        </div>
        <div ui-view class="col-xs-9"></div>
    </div>
</script>

<script type="text/ng-template" id="templates/list.item.tmpl.html">
    <h3>{{item.item}}</h3>
    <img ng-src="//robohash.org/{{item.item}}.png"/>
</script>

<script src="app.js"></script>
</body>
</html>

"ui-view" is important to tell where ui-router should show the view.

 

/**
 * Created by Answer1215 on 12/16/2014.
 */
angular.module('app', ['ui.router'])
    .config(function($stateProvider, $urlRouterProvider) {
        $stateProvider
            .state('home', {
                url: '/home',
                templateUrl: 'templates/home.tmpl.html'
            })
            .state('list', {
                url: '/list',
                templateUrl: 'templates/list.tmpl.html',
                controller: 'ListCtrl',
                controllerAs: 'list'
            })
            //nested router: "list.item",
            // ui-router understands that item is under list parent.
            .state('list.item', {
                url: '/:item',
                templateUrl: 'templates/list.item.tmpl.html',
                controller: 'ItemCtrl',
                controllerAs: 'item'
            })
    })

    .controller('ListCtrl', ListCtrl)

    .controller('ItemCtrl', ItemCtrl)

function ItemCtrl($stateParams) {

    var ItemCtrl = this;
    ItemCtrl.item = $stateParams.item;
}

function ListCtrl() {

    var ListCtrl = this;
    ListCtrl.shoppingList = [
        {name: 'Milk'},
        {name: 'Eggs'},
        {name: 'Bread'},
        {name: 'Cheese'},
        {name: 'Ham'}
    ];

    ListCtrl.selectItem = function(selectedItem) {
        _(ListCtrl.shoppingList).each(function(item) {
            item.selected = false;
            if(selectedItem === item) {
                selectedItem.selected = true;
            }
        });
    };
}

 

Read More: https://egghead.io/lessons/angularjs-introduction-ui-router

转载于:https://www.cnblogs.com/Answer1215/p/4168396.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值