Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)

简介: Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)

项目结构


css/angular-common.css


table tr td:first-child {

   /**背景图片*/

   width: 200px;

   height: 100px;

   /**居中填满*/

   background-repeat: no-repeat;

   background-position: center;

   background-size: cover;

}

a {

   text-decoration: none;

   cursor: pointer;

   border-bottom: 1px solid transparent;

}

a:hover {

   border-color: black;

}

.hasLink {

   pointer-events: auto;

   color: black;

   border-bottom: 1px solid black;

}

.hasLink:hover {

   color: blue;

   border-bottom: 1px solid blue;

}

.noLink {

   pointer-events: none;

   color: lightgray;

}

._active {

   background-color: red;

}


news.html


<!doctype html>

<html ng-app="app" ng-cloak>

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

   <meta http-equiv="X-UA-Compatible" content="ie=edge">

   <title>Angular-新闻列表页</title>

   <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>

   <script src="js/public/k-app-common.js"></script>

   <script src="js/angular/angular.min.js"></script>

   <link rel="stylesheet" href="css/angular-common.css">

</head>

<body ng-controller="ctrl">

<div>

   <table>

       <tr ng-repeat="item in list">

           <td style="background-image: url({{item.pic}})"></td>

           <td>

               <h2>{{item.title}}</h2>

               <h3>{{item.content | stripHTML}}</h3>

           </td>

           <td>

               <a ng-href="detail.html?id={{item.id}}" target="_blank">查看详情</a>

           </td>

       </tr>

   </table>

</div>

</body>

<script src="js/news.js"></script>

</html>


js/news.js


/**angular post 请求*/

let url = 'http://your_ip:your_port/api/api_name'

const config = {

   headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}, transformRequest: function (data) {

       return $.param(data);

   }

};

let app = angular.module('app', []);

app.controller('ctrl', function ($scope, $http) {

   $http.post(url, {start: 0, count: 6}, config).then((r) => {

       /* 请求成功执行代码*/

       /* alert(JSON.stringify(r.data))*/

       $scope.list = r.data.data

   }, (r) => {

       /* 请求失败执行代码*/

       alert(JSON.stringify(r))

   });

});

app.filter('stripHTML', function() {

   //可以注入依赖

   return function(c) {

       return c.stripHTML().substring(0, 30) + "...";

   }

});


detail.html


<!doctype html>

<html ng-app="app" ng-cloak>

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

   <meta http-equiv="X-UA-Compatible" content="ie=edge">

   <title>Angular-详情页</title>

   <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>

   <script src="js/public/k-app-common.js"></script>

   <script src="js/angular/angular.min.js"></script>

   <script src="js/angular/angular-sanitize.min.js"></script><!--奇葩的angular,用个ng-bind-html还需要依赖angular-sanitize.min.js,真是日了狗了!!!-->

   <link rel="stylesheet" href="css/angular-common.css">

</head>

<body ng-controller="ctrl">

<div>

   <div>

       <h1>{{data.title}}</h1>

       <h6>{{data.date|format}}</h6>

       <p ng-bind-html="data.content"></p><!--如果不引入angular-sanitize.min.js,就会报错-->

   </div>

   <div>

       <a ng-href="{{data.prevHref}}" target="_self" ng-class="data.hasPrevLink?'hasLink':'noLink'">[上一篇] {{data.prevTitle}}</a><br>

       <a ng-href="{{data.nextHref}}" target="_self" ng-class="data.hasNextLink?'hasLink':'noLink'">[下一篇] {{data.nextTitle}}</a><br><br>

   </div>

</div>

</body>

</html>

<script src="js/detail.js"></script>


js/detail.js


let url = 'http://your_ip:your_port/api/api_name'

let detailId = hash.getQueryString("id");

detailId || alert("id参数获取失败");

const config = {

   headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}, transformRequest: function (data) {

       return $.param(data);

   }

};

let app = angular.module('app', ['ngSanitize']);

app.controller('ctrl', function ($scope, $http) {

   $scope.data = {

       title: "加载中…",

       date: "",

       content: "加载中…",

       prevHref: "",

       prevTitle: "文章标题加载中…",

       nextHref: "",

       nextTitle: "文章标题加载中…",

       hasPrevLink: false,

       hasNextLink: false,

   };

   $http.post(url, {id: detailId}, config).then((r) => {

       /* 请求成功执行代码*/

       /* alert(JSON.stringify(r.data))*/

       r = r.data.data;

       document.title = r.title;

       $scope.data.title = r.title;

       $scope.data.date = r.date;

       $scope.data.content = r.content;

   }, (r) => {

       /* 请求失败执行代码*/

       alert(JSON.stringify(r))

   });

   $http.post(url, {}, config).then((r) => {

       /* 请求成功执行代码*/

       let arr = r.data.data;

       let len = arr.length;

       let id = parseInt(detailId);

       let index = parseInt(array.getIndexById(arr, id));

       if (index <= 0) {

           $scope.data.prevHref = "#";

           $scope.data.prevTitle = "没有了";

           $scope.data.hasPrevLink = false;

       } else {

           let _index_l = index - 1;

           $scope.data.prevTitle = arr[_index_l].title;

           $scope.data.prevHref = "detail.html?id=" + arr[_index_l].id;

           $scope.data.hasPrevLink = true;

       }

       if (index >= len - 1) {

           $scope.data.nextHref = "#";

           $scope.data.nextTitle = "没有了";

           $scope.data.hasNextLink = false;

       } else {

           let _index_n = index + 1;

           $scope.data.nextTitle = arr[_index_n].title;

           $scope.data.nextHref = "detail.html?id=" + arr[_index_n].id;

           $scope.data.hasNextLink = true;

       }

   }, function () {

       alert('接口请求失败!');

   });

});

app.filter('format', function () {

   //可以注入依赖

   return function (c) {

       if (c == "") return;

       return date.formatDateTime(c);

   }

});

相关文章
|
22天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
195 2
|
27天前
|
缓存 前端开发 JavaScript
前端serverless探索之组件单独部署时,利用rxjs实现业务状态与vue-react-angular等框架的响应式状态映射
本文深入探讨了如何将RxJS与Vue、React、Angular三大前端框架进行集成,通过抽象出辅助方法`useRx`和`pushPipe`,实现跨框架的状态管理。具体介绍了各框架的响应式机制,展示了如何将RxJS的Observable对象转化为框架的响应式数据,并通过示例代码演示了使用方法。此外,还讨论了全局状态源与WebComponent的部署优化,以及一些实践中的改进点。这些方法不仅简化了异步编程,还提升了代码的可读性和可维护性。
|
1月前
|
应用服务中间件 PHP Apache
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
|
1月前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
140 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
132 5
|
2月前
|
前端开发 JavaScript API
React、Vue.js 和 Angular前端三大框架对比与选择
前端框架是用于构建用户界面的工具和库,它提供组件化结构、数据绑定、路由管理和状态管理等功能,帮助开发者高效地创建和维护 web 应用的前端部分。常见的前端框架如 React、Vue.js 和 Angular,能够提高开发效率并促进团队协作。
118 4
|
3月前
|
前端开发 安全 开发者
JSF文件上传,让Web应用如虎添翼!一招实现文件上传,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,文件上传是重要功能之一。JSF(JavaServer Faces)框架提供了强大的文件上传支持,简化了开发流程。本文将介绍JSF文件上传的基本步骤:创建前端表单、处理上传文件的后端Action类、将文件保存到服务器指定目录以及返回结果页面。通过示例代码,我们将展示如何利用JSF实现文件上传功能,包括使用`h:inputFile`控件和`ManagedBean`处理上传逻辑。此外,JSF文件上传还具备类型安全、解耦合和灵活性等优点,有助于提升程序的健壮性和可维护性。
39 0
|
3月前
|
UED
JSF文件下载:解锁终极文件传输秘籍,让你的Web应用瞬间高大上!
【8月更文挑战第31天】掌握JSF文件下载功能对构建全面的Web应用至关重要。本文通过具体代码示例,详细介绍如何在JSF中实现文件下载。关键在于后端Bean中的文件读取与响应设置。示例展示了从创建实体类到使用`&lt;h:commandLink&gt;`触发下载的全过程,并通过正确设置响应头和处理文件流,确保文件能被顺利下载。这将显著提升Web应用的实用性与用户体验。
71 0
|
3月前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
56 0
|
11天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
26 1
下一篇
无影云桌面