AngularJS~集成的ajax和服务的注入

AngularJS很美,以至于迷倒了不少年青人和我这位大叔,它的美不仅仅是在写法上,而且在设计方法上都进乎于完美,用什么服务就注入什么服务,这样方法本来就很直观,程序员感觉直观了,程序在运行起来也按需要装载,这种按需要装载无论在性能上还是在表现力上都远远优于完全加载方式。

Ajax加载数据

$http服务提供了一组ajax的方法,加载数据,Get,Post都有支持,而$http服务在angular里就是被动态装载的,在面向对象里叫做DI或者IOC

       angular.module('todoApp', []).controller('RealDataController', function ($http, $scope) {
            var self = this;
            $http.get('/SOA/GetMenus').success(function (data) {
                self.dataList = data;
            }).error(function (data, status, headers, config) { });

上面是一种装载$http服务,并使用http服务的一种方法,而下面这种是通过别名的方法使用它,代码更加精简

     angular.module('todoApp',[]).controller('RealDataController2', ["$http", "$scope", function ($h, $s) {
            var self = this;
            $h.get('/SOA/GetMenus').success(function (data) {
                self.dataList = data;
            }).error(function (data, status, headers, config) { });
        }]);

通过上面的程序我们就可以把数据绑定到HTML元素上了

复制代码
  <div ng-controller="RealDataController as real">
        <ul>
            <li ng-repeat="item in real.dataList">
                <span>{{item.MenuID}}</span>
                <span>{{item.MenuName}}</span>
                <span>{{item.UpdateDate | date:'yyyy-MM-dd HH:mm:ss Z'}}</span>
                <span><a href="javascript:void(0)" ng-click="real.edit()">编辑</a></span>|
                <span><a href="javascript:void(0)" ng-click="real.del(item)">删除</a></span>
            </li>
        </ul>
    </div>
复制代码

结果如下

值得注意的是对于“删除”操作,本例也做了实现,它分为两方面,一个前台用户体验显示,二是后台数据删除,前台使用angular的双向绑定技术,将数组对象的元素删除,后台通过$http.post调用对应的api进行真实数据的删除即可,代码如下

       //删除
            self.del = function (o) {
                self.dataList.splice(self.dataList.indexOf(o), 1);
                //AJAX请求后台Api清除真实数据
                $http.post("/SOA/DelMenu?id=" + o.MenuID);
            }

在使用angular几天后,感觉它与knockoutjs有些类似的地方,当然,它在功能上即加强大,这是毋庸置疑的!

posted @   张占岭  阅读(5178)  评论(2编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2014-08-05 说说设计模式~装饰器模式(Decorator)
2014-08-05 说说设计模式~观察者模式(Observer)
2013-08-05 我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器
点击右上角即可分享
微信分享提示