写在前面
文章整理了angularjs学习目录,有园子里的朋友问我要这方面的demo,周末也没什么事,就在之前的单页应用的demo上面添加了增删改查的操作。代码比较简单,这里只列举比较重要的代码片段。完整的代码将在文章下面提供链接。
demo
display: none;" onclick="cnblogs_code_hide('9c2be513-a0c6-4e2b-af99-5978b6e482b4',event)" src="https://www.jb51.cc/res/2019/03-06/23/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
List lstOrders = = = ,);
response.Headers.Add(,); 方法,一般是GET,POST,PUT,DELETE,OPTIONS
response.Headers.Add(,);
lstOrders = List分页用
( i = ; i < ; i++ Product { Dt = DateTime.Now,Id = i + ,Name = + i.ToString(),Price = i +
<span style="color: #0000ff;">public <span style="color: #0000ff;">async Task Get(<span style="color: #0000ff;">string key,<span style="color: #0000ff;">int<span style="color: #000000;"> page)
{
<span style="color: #0000ff;">return <span style="color: #0000ff;">await Task.Factory.StartNew(() =><span style="color: #000000;">
{
<span style="color: #0000ff;">int pageSize = <span style="color: #800080;">10 <span style="color: #000000;">;
}
</span><span style="color: #008000;">//</span><span style="color: #008000;"> GET: ap<a href="https://www.jb51.cc/tag/IO/" target="_blank" class="keywords">I/O</a>rder</span>
<span style="color: #000000;"> [HttpGet]
[Route(
<span style="color: #0000ff;">public <span style="color: #0000ff;">async Task
{
<span style="color: #0000ff;">return <span style="color: #0000ff;">await Task.Factory.StartNew(() =><span style="color: #000000;">
{
<span style="color: #0000ff;">int pageSize = <span style="color: #800080;">10
</span><span style="color: #0000ff;">var</span> results = <span style="color: #0000ff;">string</span>.IsNullOrEmpty(key) ? lstOrders : lstOrders.Where(x =><span style="color: #000000;"> x.Name.Contains(key));
</span><span style="color: #008000;">//</span><span style="color: #008000;"><a href="https://www.jb51.cc/tag/fenye/" target="_blank" class="keywords">分页</a></span>
<span style="color: #0000ff;">var</span> pagedResults = results.Skip((page - <span style="color: #800080;">1</span>) *<span style="color: #000000;"> pageSize).Take(pageSize);
response.StatusCode </span>=<span style="color: #000000;"> HttpStatusCode.OK;
response.Content </span>= <span style="color: #0000ff;">new</span> StringContent(JsonConvert.SerializeObject(<span style="color: #0000ff;">new</span> { _code = <span style="color: #800080;">200</span>,_data =<span style="color: #000000;"> pagedResults }));
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> response;
});
}
[HttpPost]
[Route(</span><span style="color: #800000;">"</span><span style="color: #800000;">api/product/lists</span><span style="color: #800000;">"</span><span style="color: #000000;">)]
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">async</span> Task<HttpResponseMessage><span style="color: #000000;"> Post([FromBody] Product order)
{
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">await</span> Task.Factory.StartNew(() =><span style="color: #000000;">
{
</span><span style="color: #008000;">//</span><span style="color: #008000;">模拟id</span>
order.Id = <span style="color: #0000ff;">new</span> Random().Next(<span style="color: #800080;">101</span>,<span style="color: #800080;">5000</span><span style="color: #000000;">);
lstOrders.Add(order);
response.StatusCode </span>=<span style="color: #000000;"> HttpStatusCode.OK;
response.Content </span>= <span style="color: #0000ff;">new</span> StringContent(JsonConvert.SerializeObject(<span style="color: #0000ff;">new</span> { _code = <span style="color: #800080;">200</span>,_data =<span style="color: #000000;"> order }));
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> response;
});
}
[HttpPut]
[Route(</span><span style="color: #800000;">"</span><span style="color: #800000;">api/product/lists</span><span style="color: #800000;">"</span><span style="color: #000000;">)]
</span><span style="color: #008000;">//</span><span style="color: #008000;"> POST: ap<a href="https://www.jb51.cc/tag/IO/" target="_blank" class="keywords">I/O</a>rder</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">async</span> Task<HttpResponseMessage><span style="color: #000000;"> Put([FromBody] Product order)
{
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">await</span> Task.Factory.StartNew(() =><span style="color: #000000;">
{
</span><span style="color: #0000ff;">var</span> find = lstOrders.Find(o => o.Id ==<span style="color: #000000;"> order.Id);
</span><span style="color: #0000ff;">if</span> (find != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
{
find.Name </span>=<span style="color: #000000;"> order.Name;
find.Price </span>=<span style="color: #000000;"> order.Price;
find.Dt </span>=<span style="color: #000000;"> order.Dt;
response.StatusCode </span>=<span style="color: #000000;"> HttpStatusCode.OK;
response.Content </span>= <span style="color: #0000ff;">new</span> StringContent(JsonConvert.SerializeObject(<span style="color: #0000ff;">new</span> { _code = <span style="color: #800080;">200</span>,_data =<span style="color: #000000;"> find }));
}
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> response;
});
}
[HttpDelete]
[Route(</span><span style="color: #800000;">"</span><span style="color: #800000;">api/product/lists</span><span style="color: #800000;">"</span><span style="color: #000000;">)]
</span><span style="color: #008000;">//</span><span style="color: #008000;"> DELETE: ap<a href="https://www.jb51.cc/tag/IO/" target="_blank" class="keywords">I/O</a>rder/5</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">async</span> Task<HttpResponseMessage> Delete(<span style="color: #0000ff;">int</span><span style="color: #000000;"> id)
{
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">await</span> Task.Factory.StartNew(() =><span style="color: #000000;">
{
Product findOder </span>= lstOrders.Find(o => o.Id ==<span style="color: #000000;"> id);
lstOrders.Remove(findOder);
response.StatusCode </span>=<span style="color: #000000;"> HttpStatusCode.OK;
response.Content </span>= <span style="color: #0000ff;">new</span> StringContent(JsonConvert.SerializeObject(<span style="color: #0000ff;">new</span> { _code = <span style="color: #800080;">200</span>,_data =<span style="color: #000000;"> lstOrders }));
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> response;
});
}
}</span></pre>
display: none;" onclick="cnblogs_code_hide('5c920f98-1429-4ddf-b333-2f8286f34433',event)" src="https://www.jb51.cc/res/2019/03-06/23/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
app = angular.module('app_store',['ngRoute','StoreService'
StoreService = angular.module('StoreService'
StoreService.factory('requestService', request ='POST''''Content-Type': 'application/json' postData == "get"= "../api/product/lists?key=" + type + "&page=" += "post"= "../api/product/lists"== "DELETE"= "../api/product/lists?id=" += "put"= "../api/product/lists"= deferred = $q.defer(); 后执行,表示要去监控后面的执行
fig) {
deferred.resolve(data);
fig) {
};
deferred.reject(data); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 声明执行失败,即服务器返回<a href="https://www.jb51.cc/tag/cuowu/" target="_blank" class="keywords">错误</a> </span>
<span style="color: #000000;"> });
};
display: none;" onclick="cnblogs_code_hide('6b171809-a2bc-45d4-8d5c-5367673fd300',event)" src="https://www.jb51.cc/res/2019/03-06/23/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
app.config(['$routeProvider','/',{ templateUrl: '../Scripts/Views/orders.html',controller: 'StoreController''/home',{ templateUrl: '../Scripts/Views/orders.html''/add',{ templateUrl: '../Scripts/Views/add-order.html',controller: 'OrderController''/edit/:id',controller: 'OrderController''/error',{ templateUrl: '../Scripts/Views/Error.html',controller: 'ErrorController''/error'
display: none;" onclick="cnblogs_code_hide('551377b9-357c-4540-8d50-1a0e0c169985',event)" src="https://www.jb51.cc/res/2019/03-06/23/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
app.controller('StoreController',cope,$http,$location,$routeParams,requestService) {
console.log('StoreController' page = 1
console.log('OrderController'<span style="color: #000000;">);
$scope.product =<span style="color: #000000;"> {
Id: ''<span style="color: #000000;">,Name: ''<span style="color: #000000;">,Price: 0<span style="color: #000000;">
};
<span style="color: #0000ff;">var id =<span style="color: #000000;"> $routeParams.id;
$scope.btn = id ? '确定' : '添加'<span style="color: #000000;">;
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.productKey </span>= $s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.productKey ? $s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.productKey : ''<span style="color: #000000;">;
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.products </span>=<span style="color: #000000;"> [];
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.query </span>= <span style="color: #0000ff;">function</span><span style="color: #000000;"> (key,page) {
requestService.lists(key,page).then(</span><span style="color: #0000ff;">function</span><span style="color: #000000;"> (data) {
</span><span style="color: #0000ff;">if</span> (data._code === 200<span style="color: #000000;">) {
</span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">var</span> i = 0; i < data._data.length; i++<span style="color: #000000;">) {
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.products.push(data._data[i]);
};
};
});
console.log($s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.products);
};
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.query(</span>''<span style="color: #000000;">,page)
</span><span style="color: #008000;">//</span><span style="color: #008000;"><a href="https://www.jb51.cc/tag/chaxun/" target="_blank" class="keywords">查询</a></span>
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.search = <span style="color: #0000ff;">function</span><span style="color: #000000;"> () {
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.products </span>=<span style="color: #000000;"> [];
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.query($s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.productKey,page)
};
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.add </span>= <span style="color: #0000ff;">function</span><span style="color: #000000;"> () {
$location.url(</span>'/add'<span style="color: #000000;">);
};
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.loadMore </span>= <span style="color: #0000ff;">function</span><span style="color: #000000;"> () {
page</span>++<span style="color: #000000;">;
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.query($s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.productKey,page)
};
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.delte </span>= <span style="color: #0000ff;">function</span><span style="color: #000000;"> (id) {
requestService.product_delete(id).then(</span><span style="color: #0000ff;">function</span><span style="color: #000000;"> (data) {
console.log(data);
</span><span style="color: #0000ff;">if</span> (data._code == 200<span style="color: #000000;">) {
console.log(</span>'<a href="https://www.jb51.cc/tag/shanchu/" target="_blank" class="keywords">删除</a>成功'<span style="color: #000000;">);
console.log(data._data);
}
});
};
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.edit </span>= <span style="color: #0000ff;">function</span><span style="color: #000000;"> (id) {
$location.url(</span>'/edit/' +<span style="color: #000000;"> id);
};
});
app.controller(
'OrderController',requestService) {console.log('OrderController'<span style="color: #000000;">);
$scope.product =<span style="color: #000000;"> {
Id: ''<span style="color: #000000;">,Name: ''<span style="color: #000000;">,Price: 0<span style="color: #000000;">
};
<span style="color: #0000ff;">var id =<span style="color: #000000;"> $routeParams.id;
$scope.btn = id ? '确定' : '添加'<span style="color: #000000;">;
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.add </span>= <span style="color: #0000ff;">function</span><span style="color: #000000;"> () {
</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (id) {
$s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.product.Id </span>=<span style="color: #000000;"> id;
requestService.product_put($s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.product).then(</span><span style="color: #0000ff;">function</span><span style="color: #000000;"> (data) {
console.log(data);
</span><span style="color: #0000ff;">if</span> (data._code == 200<span style="color: #000000;">) {
console.log(</span>'<a href="https://www.jb51.cc/tag/xiugai/" target="_blank" class="keywords">修改</a>成功'<span style="color: #000000;">);
console.log(data._data);
}
});
} </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {
requestService.product_add($s<a href="https://www.jb51.cc/tag/cop/" target="_blank" class="keywords">cop</a>e.product).then(</span><span style="color: #0000ff;">function</span><span style="color: #000000;"> (data) {
console.log(data);
</span><span style="color: #0000ff;">if</span> (data._code == 200<span style="color: #000000;">) {
console.log(</span>'<a href="https://www.jb51.cc/tag/tianjia/" target="_blank" class="keywords">添加</a>成功'<span style="color: #000000;">);
console.log(data._data);
}
});
};
};
});
display: none;" onclick="cnblogs_code_hide('5283f898-3641-48a9-a1c7-c9c64cea23c1',event)" src="https://www.jb51.cc/res/2019/03-06/23/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
required
name<span style="color: #0000ff;">="name"<span style="color: #ff0000;"> class<span style="color: #0000ff;">="form-control"<span style="color: #ff0000;"> placeholder<span style="color: #0000ff;">="单价"<span style="color: #ff0000;"> ng-model<span style="color: #0000ff;">="product.Price"<span style="color: #ff0000;"> required <span style="color: #0000ff;">/>
<span style="color: #0000ff;"><<span style="color: #800000;">button <span style="color: #ff0000;">class<span style="color: #0000ff;">="btn btn-primary btn-block"<span style="color: #ff0000;"> ng-click<span style="color: #0000ff;">="add()"<span style="color: #0000ff;">>{{btn}}<span style="color: #0000ff;"></<span style="color: #800000;">button<span style="color: #0000ff;">>
<span style="color: #0000ff;"><
<span style="color: #800000;">input <span style="color: #ff0000;">type<span style="color: #0000ff;">="text"<span style="color: #ff0000;">name<span style="color: #0000ff;">="name"<span style="color: #ff0000;"> class<span style="color: #0000ff;">="form-control"<span style="color: #ff0000;"> placeholder<span style="color: #0000ff;">="单价"<span style="color: #ff0000;"> ng-model<span style="color: #0000ff;">="product.Price"<span style="color: #ff0000;"> required <span style="color: #0000ff;">/>
<span style="color: #0000ff;"><<span style="color: #800000;">button <span style="color: #ff0000;">class<span style="color: #0000ff;">="btn btn-primary btn-block"<span style="color: #ff0000;"> ng-click<span style="color: #0000ff;">="add()"<span style="color: #0000ff;">>{{btn}}<span style="color: #0000ff;"></<span style="color: #800000;">button<span style="color: #0000ff;">>
display: none;" onclick="cnblogs_code_hide('7cf48c7b-ea9e-49cb-a619-90bb9fdc7661',event)" src="https://www.jb51.cc/res/2019/03-06/23/405b18b4b6584ae338e0f6ecaf736533.gif" alt="">
搜索商品"
<span style="color: #0000ff;"><</span><span style="color: #800000;">dt </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="address_user"</span><span style="color: #0000ff;">><</span><span style="color: #800000;">img </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="address_user"</span><span style="color: #ff0000;"> src</span><span style="color: #0000ff;">="/Content/Images/main.png"</span> <span style="color: #0000ff;">/></</span><span style="color: #800000;">dt</span><span style="color: #0000ff;">></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">dd </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="address_font"</span><span style="color: #0000ff;">></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">p </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="address_font_t"</span><span style="color: #0000ff;">></span>{{item.Name}}<span style="color: #0000ff;"></</span><span style="color: #800000;">p</span><span style="color: #0000ff;">></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">p</span><span style="color: #0000ff;">></span>单价:¥{{item.Price}}<span style="color: #0000ff;"></</span><span style="color: #800000;">p</span><span style="color: #0000ff;">></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">a </span><span style="color: #ff0000;">ng-click</span><span style="color: #0000ff;">="delte(item.Id)"</span><span style="color: #0000ff;">></span><a href="https://www.jb51.cc/tag/shanchu/" target="_blank" class="keywords">删除</a><span style="color: #0000ff;"></</span><span style="color: #800000;">a</span><span style="color: #0000ff;">></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">a </span><span style="color: #ff0000;">ng-click</span><span style="color: #0000ff;">="edit(item.Id)"</span><span style="color: #0000ff;">></span>编辑<span style="color: #0000ff;"></</span><span style="color: #800000;">a</span><span style="color: #0000ff;">></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">dd</span><span style="color: #0000ff;">></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">dl</span><span style="color: #0000ff;">></span>
<span style="color: #0000ff;"></
<span style="color: #800000;">div<span style="color: #0000ff;">><span style="color: #0000ff;"><</span><span style="color: #800000;">button </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="btn btn-primary btn-block "</span><span style="color: #ff0000;"> ng-click</span><span style="color: #0000ff;">="loadMore()"</span><span style="color: #0000ff;">></span>加载更多...<span style="color: #0000ff;"></</span><span style="color: #800000;">button</span><span style="color: #0000ff;">></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">button </span><span style="color: #ff0000;">class</span><span style="color: #0000ff;">="btn btn-primary btn-block "</span><span style="color: #ff0000;"> ng-click</span><span style="color: #0000ff;">="add()"</span> <span style="color: #0000ff;">></span><a href="https://www.jb51.cc/tag/tianjia/" target="_blank" class="keywords">添加</a><span style="color: #0000ff;"></</span><span style="color: #800000;">button</span><span style="color: #0000ff;">></span></pre>
文件中
Meta
Meta
@ViewBag.Title - My ASP.NET Single Page Application 站点样式 *@
列表页面
添加商品和编辑商品使用同一个视图文件和controller,通过参数id来区别是编辑还是添加商品
删除商品,根据id删除商品,前端根据_code判断是否删除成功,删除商品0,结果如下所示
默认pageSize=10,加载第二页,如下图所示:
修改