AngularJS之初级Route【一】(六)

简介:

前言

这一节我们来讲讲AngularJS中的路由以及利用AngularJS在WebAPi中进行CRUD。下面我们一起来看看。

话题

当我们需要进行路由映射时即用到 r o u t e A n g u l a r J S n g R o u t e U R L location.path方法匹配到映射的视图时,视图会进行加载并呈现。在 r o u t e 使 p r o v i d e r routeProvider,该服务的第一个参数是通过URL需要应用的路由,第二个参数为路由配置对象。例如,如下:

复制代码
app.config(function ($routeProvider) {  
    
    $routeProvider.when("/mobile", {  
        templateUrl: "cnblogs.html",  
        controller: "cnblogsController"  
    });  
  
});  
复制代码

在$routeProvider中还有其他路由属性,我们看看。

路由配置

我们给出如下路由的有关属性列表。

Name Descriptions
controller 指定匹配到的视图中的控制器名称
controllerAs 指定控制器的别名
Template 指定返回视图的内容
templateUrl 指定通过URL匹配对应的路由中的视图并呈现,该属性是一个字符串或者返回值为字符串的函数
resolve 指定控制器的依赖
redirectTo 当路由进行匹配时可以进行重定向

上述我们关于路由基本讲述完毕,但是我们还未说一个东西,那就是在AngularJS的路由中如何进行参数的传递呢?如下:

$routeProvider.when("/tv/:discount", {  
        templateUrl: "tv.html",  
        controller: "TVController"  
    });  

如上述的 /tv/:discount 传递参数通过冒号(:)加上参数名称即可。

下面我们通过实际例子来加深理解AngularJS中的路由。

实例1

Index.html

复制代码
<html>  
<head>  
    <title>Home Page For Route</title>  
    <style type="text/css">
        a{
            cursor:pointer;
        }
    </style>
    <meta charset="utf-8"/>
    <link href="../Content/bootstrap.min.css" rel="stylesheet" />  
    <script src="../Scripts/angular.js"></script>  
    <script src="../Scripts/angular-route.js"></script>  
    <script src="app.js"></script>  
    <script src="IndexController.js"></script>  
    <script src="HomeController.js"></script>  
    <script src="MobileController.js"></script>  
    <script src="TVController.js"></script>  
    <script src="ComputerController.js"></script>  
</head>  
<body ng-app="app" ng-controller="IndexController">  
    <div class="rowDiv panel panel-primary">  
        <h2 class="panel-heading">Angular Route</h2>  
        <table style="width:40%;">  
            <tr class="table-bordered">  
                <td><a ng-click="fnGoToPage('home');" class="btn-block">Home</a></td>  
                <td><a ng-click="fnGoToPage('mobile');">Mobile</a></td>  
                <td><a ng-click="fnGoToPage('tv');">TV</a></td>  
                <td><a ng-click="fnGoToPage('computer');">Computers</a></td>  
            </tr>  
        </table>  
  
    </div>  
    <div class="rowDiv navbar-form">  
        <div class="pgHolder" ng-view>  
        </div>  
    </div>  
</body>  
</html>  
复制代码

IndexController.js

复制代码
testApp.controller("IndexController", ['$scope', '$http', '$location',  
    function ($scope, $http, $location) {  
        $scope.fnGoToPage = function (args) {  
            if (args == 'tv') {  
                $location.path('/' + args + "/80%");  
            }  
            else  
                $location.path('/' + args);  
        }  
    }  
]);  
复制代码

再给出其中一个视图及其对应的脚本(其他则不再给出)

TV.html

复制代码
<div class="panel-body">  
    <h2 class="panel-heading">所有产品打折{{discount}}</h2>  
    <table class="table table-striped table-bordered">  
        <thead>  
            <tr>  
                <th>Name</th>  
                <th>Company</th>  
                <th class="text-right">Quantity</th>  
                <th class="text-right">Price</th>  
            </tr>  
        </thead>  
        <tbody>  
            <tr ng-repeat="item in data">  
                <td>{{item.name}}</td>  
                <td>{{item.company}}</td>  
                <td class="text-right">{{item.quantity}}</td>       
                <td class="text-right">{{item.price | currency}}</td>                  
            </tr>  
        </tbody>  
    </table>  
</div>  
复制代码

TVController.js

复制代码
testApp.controller("TVController", ['$scope', '$http','$routeParams',  
    function ($scope, $http, $routeParams) {  
        $scope.discount = $routeParams.discount; //通过$routeParams来获取路由参数即上述传递过来的80%  
  
        $scope.data = [ { name: 'LED TV 20"', company: 'Samsung', quantity: '10', price: '11000.00' },  
                        { name: 'LED TV 24"', company: 'Samsung', quantity: '50', price: '15000.00' },  
                        { name: 'LED TV 32"', company: 'LG', quantity: '10', price: '32000.00' },  
                        { name: 'LED TV 48"', company: 'SONY', quantity: '25', price: '28000.00' }];  
    }  
]);  
复制代码

下面我们来看看具体效果:

接下来我们通过一个简单利用WebAPi和AngularJS结合来完成CURD的例子。

AngularJS CRUD for WebAPi 

在AngularJS中我们可以利用$resource来进行发送请求有get、save、query、remove、delete方法。下面给出应用程序结构。

moviesService.js 

通过此脚本来与WebAPi进行交互获取数据。

复制代码
(function () {
    'use strict';

    angular
        .module('moviesServices', ['ngResource'])
        .factory('Movie', Movie);

    Movie.$inject = ['$resource'];

    function Movie($resource) {
        return $resource('/api/movies/:id');
    }

})();
复制代码

Index.cshtml

通过此视图作为母版加载其他页面

复制代码
@{
    Layout = null;
}

<!DOCTYPE html>
<html ng-app="moviesApp">
<head>
    <base href="/">
    <meta charset="utf-8" />
    <title>Movies</title>
    <!-- jQuery -->
    <script src="../Scripts/jquery-1.10.2.min.js"></script>
    <!-- Bootstrap -->
    <link href="../Content/bootstrap.min.css" rel="stylesheet" />
    <script src="../Scripts/bootstrap.min.js"></script>
    <!-- AngularJS-->
    <script src="../Scripts/angular.min.js"></script>
    <script src="../Scripts/angular-resource.min.js"></script>
    <script src="../Scripts/angular-route.min.js"></script>
    <script src="../../movies/Services/moviesService.js"></script>
    <script src="../../movies/app.js"></script>
    <script src="../../movies/Controllers/moviesController.js"></script>
</head>
<body ng-cloak>
    <div class="container-fluid">
        <ng-view></ng-view>
    </div>
</body>
</html>
复制代码

app.js

加载依赖模块以及对应的控制器执行的相应操作

复制代码
(function () {
    'use strict'; 

    config.$inject = ['$routeProvider']; 

    angular.module('moviesApp', [
        'ngRoute', 'moviesServices'
    ]).config(config);

    function config($routeProvider) {
        $routeProvider
            .when('/', {
              templateUrl: '../../movies/Views/list.html',
              controller: 'MoviesListController'
            })
            .when('/movies/add', {
                templateUrl: '../../movies/Views/add.html',
                controller: 'MoviesAddController'
            })
            .when('/movies/edit/:id', {
                templateUrl: '../../movies/Views/edit.html',
                controller: 'MoviesEditController'
            })
            .when('/movies/delete/:id', {
                templateUrl: '../../movies/Views/delete.html',
                controller: 'MoviesDeleteController'
            });

    }

})();
复制代码

上述核心脚本已经给出,至于其他页面则不再平铺代码,下面我们来看看效果:

 

对于上述利用angular-resource来发送请求只能满足基本要求,还是不够灵活,在实际开发中建议只用基于RESTful API的 Restangular 。它与$resource有何不同呢?如下:

(1)它使用promise而$resource没有。

(2)我们可以使用$routeProvider.resolve来解析注入的对象。

(3)它没有$resource诸多的bug。

(4)支持所有HTTP方法。

(5)支持ETag 。

(6)支持自连接元素。

(7)对于每个请求我们不需要创建$resource对象。

 ......

该服务脚本地址:https://github.com/mgonto/restangular#differences-with-resource

总结 

本节我们学习了AngularJS中的路由,同时也利用WebAPi和AngularJS进行基本的增、删、改等。到目前为止,关于AngularJS中几大重点就已大概叙述完毕,后面会讲讲AngularJS中的一些常用指令,当然也会通过一些实际例子来加深我们的理解且就遇到的问题进行积累。今天到此为止。






本文转自Jeffcky博客园博客,原文链接:http://www.cnblogs.com/CreateMyself/p/5539348.html,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
设计模式 前端开发 JavaScript
AngularJS基础知识总结
【5月更文挑战第1天】AngularJS,谷歌收购的JavaScript框架,用于构建动态Web应用,采用MVC模式简化开发。特性包括:模块化代码管理、双向数据绑定、语义化HTML标签和依赖注入。适合单页面应用开发,但不适用于DOM操作密集或高性能需求场景。提供强大工具,提升开发效率和代码可维护性。
54 2
|
移动开发 前端开发 JavaScript
AngularJS 技术深入解析
AngularJS 是一个流行的 JavaScript 框架,用于构建动态的单页面应用程序(SPA)。它提供了一种优雅而强大的方式来开发前端应用,具有出色的数据绑定、模块化和可扩展性等特性。本文将深入探讨 AngularJS 的一些关键技术。
117 0
|
7月前
|
UED
深入了解 AngularJS 路由的原理和使用技巧
深入了解 AngularJS 路由的原理和使用技巧
105 0
|
JavaScript 前端开发
AngularJS学习(一)
@[TOC](目录) ### 1. 引入 AngularJS 要使用 AngularJS,您需要首先引入 angular.js 文件。这可以通过在 HTML 文件中使用<script>标签来实现: ```html <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script> ``` ### 2. 创建一个 AngularJS 应用 在 HTML 文件中,使用 ng-app 指令创建一个 AngularJS 应用。这个指令必须放在<html>标签内: ```ht
|
存储 JavaScript 前端开发
AngularJS进阶学习(二)
AngularJS 是一种流行的 JavaScript 框架,用于开发 Web 应用程序。它提供了许多功能,如依赖注入、控制器、指令、服务、过滤器等,使开发人员可以更轻松地构建复杂的 Web 应用程序。在这篇教程中,我们将介绍 AngularJS 的安装、使用、应用场景以及一些代码实例。 # 一、安装 AngularJS 安装 AngularJS 需要一些前置条件,如 Node.js 和 npm。下面是安装 AngularJS 的具体步骤: ## 1. 安装 Node.js 和 npm 在安装 AngularJS 之前,您需要安装 Node.js 和 npm。Node.js 是一个用于在服务
|
Web App开发 JavaScript 前端开发
|
Web App开发 前端开发 API