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);

   }

});

相关文章
|
10月前
|
人工智能 数据挖掘 API
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
976 21
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
|
10月前
|
Java 数据库 Docker
基于neo4j数据库和dify大模型框架的rag模型搭建
基于neo4j数据库和dify大模型框架的rag模型搭建
2939 35
|
8月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
635 0
|
11月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
711 14
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
1882 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
Oracle 关系型数据库 Java
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
2178 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
缓存 前端开发 JavaScript
前端serverless探索之组件单独部署时,利用rxjs实现业务状态与vue-react-angular等框架的响应式状态映射
本文深入探讨了如何将RxJS与Vue、React、Angular三大前端框架进行集成,通过抽象出辅助方法`useRx`和`pushPipe`,实现跨框架的状态管理。具体介绍了各框架的响应式机制,展示了如何将RxJS的Observable对象转化为框架的响应式数据,并通过示例代码演示了使用方法。此外,还讨论了全局状态源与WebComponent的部署优化,以及一些实践中的改进点。这些方法不仅简化了异步编程,还提升了代码的可读性和可维护性。
427 3
|
SQL 数据管理 数据库
文章初学者指南:SQL新建数据库详细步骤与最佳实践
引言:在当今数字化的世界,数据库管理已经成为信息技术领域中不可或缺的一部分。作为广泛使用的数据库管理系统,SQL已经成为数据管理和信息检索的标准语言。本文将详细介绍如何使用SQL新建数据库,包括准备工作、具体步骤和最佳实践,帮助初学者快速上手。一、准备工作在开始新建数据库之前,你需要做好以下准备工作
1159 3
|
前端开发 JavaScript API
React、Vue.js 和 Angular前端三大框架对比与选择
前端框架是用于构建用户界面的工具和库,它提供组件化结构、数据绑定、路由管理和状态管理等功能,帮助开发者高效地创建和维护 web 应用的前端部分。常见的前端框架如 React、Vue.js 和 Angular,能够提高开发效率并促进团队协作。
1613 4