首页 > 代码库 > [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
[angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
MVC + Web API + AngularJs 搭建简单的 CURD 框架
GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage
简介
AngularJS[1] 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
布局页的引用
<script src=http://www.mamicode.com/"~/Scripts/jquery-1.10.2.min.js"></script> <script src=http://www.mamicode.com/"~/Scripts/bootstrap.min.js"></script> @*angularJs*@ <script src=http://www.mamicode.com/"~/Scripts/angular-js/angular.js"></script> <script src=http://www.mamicode.com/"~/Scripts/angular-js/angular-route.js"></script> @*angularJs 自定义的配置*@ <script src=http://www.mamicode.com/"~/Scripts/core/app.js"></script> <script src=http://www.mamicode.com/"~/Scripts/core/app-route.js"></script> <script src=http://www.mamicode.com/"~/Scripts/core/app-service.js"></script> @*angularJs 自定义的控制器*@ <script src=http://www.mamicode.com/"~/Scripts/core/controllers/demoController.js"></script>
app.js
var app = angular.module(‘myApp‘, [‘ngRoute‘, ‘demoService‘, ]);
app-route.js
//路由配置app.config([‘$routeProvider‘, function ($routeProvider) { $routeProvider .when(‘/‘, { templateUrl: ‘../Scripts/core/views/demo/index.html‘, controller: ‘demoController‘ }) .when(‘/home‘, { templateUrl: ‘../Scripts/core/views/demo/index.html‘, controller: ‘demoController‘ }) .when(‘/add‘, { templateUrl: ‘../Scripts/core/views/demo/edit.html‘, controller: ‘demoEditController‘ }) .when(‘/edit/:id‘, { templateUrl: ‘../Scripts/core/views/demo/edit.html‘, controller: ‘demoEditController‘ }) .when(‘/error‘, { templateUrl: ‘../Scripts/Views/Error.html‘, controller: ‘errorController‘ }) .otherwise({ redirectTo: ‘/error‘ });}]);
app-service.js
//服务var demoService = angular.module(‘demoService‘, []);//请求服务demoService.factory(‘requestService‘, function ($http, $q) { var params = { method: ‘‘, url: ‘‘, headers: { ‘Content-Type‘: ‘application/json‘ }, data: {} } var request = { //增 add: function (data) { params.method = "post"; params.url = "../api/demo/add"; params.data = data; return requestService($http, $q, params); }, //删 del: function (id) { params.method = "delete"; params.url = "../api/demo/del?id=" + id; return requestService($http, $q, params); }, //改 update: function (data) { params.method = "put"; params.url = "../api/demo/update"; params.data = data; return requestService($http, $q, params); }, //查 get: function (id) { params.method = "get"; params.url = "../api/demo/get?id=" + id; return requestService($http, $q, params); }, //分页 details: function (key, pageIndex) { params.method = "get"; params.url = "../api/demo/details?key=" + key + "&pageIndex=" + pageIndex; return requestService($http, $q, params); } }; return request;});//请求服务function requestService($http, $q, request) { return $http(request);};
demoController.js
app.controller(‘demoController‘, function ($scope, $http, $location, $routeParams, requestService) { console.log(‘demoController‘); var currentPageIndex = 1; $scope.list = []; //删除 $scope.del = function (id) { requestService.del(id) .then(function (result) { var data =http://www.mamicode.com/ result.data; console.log(data); }); }; $scope.demoKey = $scope.demoKey ? $scope.demoKey : ""; $scope.details = function (key, pageIndex) { requestService.details(key, pageIndex) .then(function (result) { var data =http://www.mamicode.com/ result.data; $scope.list = data; }); console.log($scope.list); }; $scope.details("", currentPageIndex); //查询 $scope.search = function () { $scope.list = []; $scope.details($scope.demoKey, currentPageIndex); }; //新增 $scope.add = function () { $location.url(‘/add‘); }; //编辑 $scope.edit = function (id) { $location.url(‘/edit/‘ + id); }; //下一页 $scope.nextPage = function () { currentPageIndex++; $scope.details($scope.demoKey, currentPageIndex); }; //上一页 $scope.prePage = function () { if (currentPageIndex > 1) { currentPageIndex--; } $scope.details($scope.demoKey, currentPageIndex); };});//demoEditControllerapp.controller(‘demoEditController‘, function ($scope, $http, $location, $routeParams, requestService) { console.log(‘demoEditController‘); $scope.demo = { Id: ‘‘, Name: ‘‘, Price: 0 }; var id = $routeParams.id; $scope.get = function () { requestService.get(id).then(function (result) { console.log(result); $scope.demo = result.data; }); } if (id != null) { $scope.get(); } $scope.save = function () { if (id) { $scope.demo.Id = id; requestService.update($scope.demo).then(function (result) { console.log(result); var data =http://www.mamicode.com/ result.data; console.log("更新成功"); console.log(data); }); } else { requestService.add($scope.demo).then(function (result) { console.log(result); var data =http://www.mamicode.com/ result.data; console.log("添加成功"); console.log(data); }); }; }; });
index.html
<div class="address_serace"> <input class="form-control" ng-change="search()" ng-model="demoKey" placeholder="搜索"></div><div class="address_div"> <dl class="address_dl" ng-repeat="item in list"> <dd class="address_font"> <p class="address_font_t">{{item.Name}}</p> <p>单价:¥{{item.Price}}</p> <a ng-click="del(item.Id)">删除</a> <a ng-click="edit(item.Id)">编辑</a> </dd> </dl></div><button class="btn btn-primary btn-block " ng-click="prePage()">上一页...</button><button class="btn btn-primary btn-block " ng-click="nextPage()">下一页...</button><button class="btn btn-primary btn-block " ng-click="add()">添加</button>
edit.html
<input type="text" name="name" class="form-control" placeholder="商品" ng-model="demo.Name" required /><input type="text" name="name" class="form-control" placeholder="价格" ng-model="demo.Price" required /><button class="btn btn-primary btn-block" ng-click="save()">保存</button>
API:Demo 控制器
#regionusing System;using System.Collections.Generic;using System.Linq;using System.Web.Http;using Wen.MvcSinglePage.Models.Api;#endregionnamespace Wen.MvcSinglePage.Controllers.Api{ public class DemoController : ApiController { private IList<DemoViewModel> _demos = new List<DemoViewModel>(); public DemoController() { InitDemo(); } /// <summary> /// 添加 /// </summary> /// <param name="demo"></param> /// <returns></returns> [HttpPost] public DemoViewModel Add([FromBody] DemoViewModel demo) { _demos.Add(demo); return demo; } /// <summary> /// 获取 /// </summary> /// <returns></returns> [HttpGet] public DemoViewModel Get(int id) { return _demos.FirstOrDefault(x => x.Id == id); } /// <summary> /// 删除 /// </summary> /// <param name="id"></param> /// <returns></returns> [HttpDelete] public int Del(int id = 0) { var demo = _demos.FirstOrDefault(x => x.Id == id); if (demo != null) _demos.Remove(demo); return id; } /// <summary> /// 更新 /// </summary> /// <param name="demo"></param> /// <returns></returns> [HttpPut] public DemoViewModel Update([FromBody] DemoViewModel demo) { var entity = _demos.FirstOrDefault(x => x.Id == demo.Id); if (entity == null) return demo; entity.Name = demo.Name; entity.Price = demo.Price; return demo; } /// <summary> /// 详情(分页) /// </summary> /// <param name="key"></param> /// <param name="pageIndex"></param> /// <returns></returns> [HttpGet] public IEnumerable<DemoViewModel> Details(string key, int pageIndex) { const int pageSize = 5; if (!string.IsNullOrEmpty(key)) { _demos = _demos.Where(x => x.Name.Contains(key)).ToList(); } return _demos.Skip(pageSize * (pageIndex - 1)).Take(pageSize); } /// <summary> /// 初始化 Demo /// </summary> private void InitDemo() { var random = new Random(); for (var i = 0; i < 100; i++) { _demos.Add(new DemoViewModel { Id = i, Name = $"商品:{i}", Price = random.Next() }); } } }}
GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage
【博主】反骨仔
【出处】http://www.cnblogs.com/liqingwen/p/6713612.html
【参考】http://www.cnblogs.com/wolf-sun/p/5279175.html
[angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。