1、myService.html:

<!DOCTYPE HTML>
<html ng-app="app">
<head>
    <title>自定义服务与后台数据交互</title>
    <meta charset="utf-8">    
    <link rel="stylesheet" href="../css/bootstrap.css">
    <script src="../js/angular.js"></script>
    <style>
    .tip{background: #f2f2f2;border-radius: 6px;box-shadow: 2px 2px 4px #777;width: 200px;height: auto;position: relative;top:-10px;padding: 10px;}
    </style>
</head>
<body>
    <div ng-controller="myServiceCtrl" ng-click="hideTip()">
        <label>用户名</label>
        <input type="text" ng-model="username" placeholder="请输入用户名..."/>
        <div ng-show="showld" ng-class='{tip: showld}'>
            <p ng-repeat="user in users">{{user.name}}</p>
        </div>
    </div>
<script src="myService.js"></script>
</body>
</html>

2、myService.js:

var myModule = angular.module("app",[]);
myModule.service('userListService', ['$http', function($http){
    var doRequest = function(username,path){
        return $http({//底层其实还是$http的交互
            method:'GET',
            url:'data.json'
        });
    }
    return{//一层一层的封装
        userList:function(username){
            return doRequest(username,'userList');
        }
    }
}]);
//上面封装的服务其实就是众多controller中与后台文件交互,得到数据的共同代码,提取出来单独封装在公共服务模块里,供后面的控制器直接调用而已
myModule.controller('myServiceCtrl', ['$scope','$timeout','userListService', //注入除作用域外的定时器对象和自定义的服务,注意:angular系统自带的都是带$符的,自定义的是不带$符的
    function($scope,$timeout,userListService){
        var timeout;//定义延迟变量
        $scope.showld = false;
        $scope.watch('username',function(newUserName){//监察username,一旦username发生变化,就执行后面的function()函数
            if (newUserName) {//如果拿到新用户名,就用自定义服务中的方法进行处理
                if (timeout) {//一旦timeout里面有定时器id
                    $timeout.cancel(timeout);//就清除已经生成过的定时器,cancel()相当于clearTimeOut()方法
                }
                timeout = $timeout(function(){
                    userListService.userList(newUserName)
                    .success(function(data,status){
                        $scope.users = data;
                        $scope.showld = true;
                    });
                },350);
            };
        });
        $scope.hideTip = function(){//点击就隐藏提示框,注意不要放在控制器之外了,否则无效
            $scope.showld = false;
        }
    }
]);

--@angularJS--自定义服务与后台数据交互小实例的更多相关文章

  1. AngularJS: 自定义指令与控制器数据交互

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  2. --@angularJS--$http服务与后台数据交互

    1.httpBasic.html: <!DOCTYPE HTML><html ng-app="app"><head>    <title& ...

  3. 《ServerSuperIO Designer IDE使用教程》- 6.增加与阿里云物联网(IOT)对接服务,实现数据交互。发布:v4.2.4 版本

    v4.2.4 更新内容:1.增加了对接阿里物联网平台的服务.下载地址:官方下载   6. 增加与阿里云物联网(IOT)对接服务,实现数据交互  6.1    概述 为了满足业务系统数据上云的要求,Se ...

  4. AntDesign(React)学习-10 Dva 与后台数据交互

    明天正式在线办公没时间学习了,今天晚上再更新一篇, 代码提交一次:https://github.com/zhaogaojian/jgdemo 1.src下创建services目录 创建文件userSr ...

  5. MUI框架-09-MUI 与后台数据交互

    MUI框架-09-MUI 与后台数据交互 本篇介绍使用 art-template 和原生 MUI 的数据交互 mui.ajax 来实现 我们大家都知道,想要数据交互就要有数据,每次当我们发送请求,我们 ...

  6. 深究AngularJS——自定义服务详解(factory、service、provider)

    前言 3种创建自定义服务的方式.  Factory Service Provider 大家应该知道,AngularJS是后台人员在工作之余发明的,他主要应用了后台早就存在的分层思想.所以我们得了解下分 ...

  7. js前台与后台数据交互-前台调后台

    转自:http://blog.csdn.net/wang379275614/article/details/17033981   网站是围绕数据库来编程的,以数据库中的数据为中心,通过后台来操作这些数 ...

  8. 使用Jquery.AJAX方法和PHP后台数据交互小结

    使用jQuery的AJAX方法和后台PHP进行数据交互,交互采用的数据格式JSON格式. 我主要小小的总结了一下,我使用AJAX方法时候遇到一些小小的问题. 第一:在传递数据的时候,传输地址注意是否正 ...

  9. angularjs 自定义服务的三种方式

    angularjs 中可通过三种($provider,$factory,$service)方式自定义服务,以下是不同的实现形式: // 定义module , module中注入$providevar ...

随机推荐

  1. CentOS6.5 安装snorby

    如果下列任何组件之一已经被安装,请酌情忽略 1.Snort 参照 CentOS6.5 安装snort 2.GIT 系统自带 3.Ruby 版本限制> 1.9.2 系统自带版本过低首先卸载掉,注意 ...

  2. 某技术大牛的帖子(android项目总结)

    1. 一般性控件需要设置onclick事件才会有点击效果(selector). 2.  <item android:drawable=”@drawable/btn_ct_green” /> ...

  3. .net core 14

  4. copy ,abs,includes 3个函数

    copy:  Copy函数原型:标头: <algorithm> OutputIterator copy( InputIterator begin, InputIterator end, o ...

  5. apache2.2+tomcat配置[转]

    Apache和Tomcat同是Apache基金会下面的两个项目. 一个是HTTP WEB服务器,另一个是servlet容器(servlet container),最新的5.5.X系列实现Servlet ...

  6. Lambda应用设计模式 [转载]

    Lambda应用设计模式   前言 在使用 Lambda 表达式时,我们常会碰到一些典型的应用场景,而从常用场景中抽取出来的应用方式可以描述为应用模式.这些模式可能不全是新的模式,有的参考自 Java ...

  7. CDOJ 1270 Playfair

    模拟题,代码写得比较乱... #include<cstdio> #include<cstring> #include<cmath> #include<queu ...

  8. mac和xcode快捷键

    mac中: 1.怎么建立快捷方式 首先 按住option+command  ,在用鼠标拖动目标文件到指定地点,先松开鼠标,然后在松开键盘

  9. Nginx日志配置及日志切割

    日志配置 日志对于统计排错来说非常有利的.本文总结了nginx日志相关的配置如access_log.log_format.open_log_file_cache.log_not_found.log_s ...

  10. [iOS Animation]-CALayer 绘图效率

    绘图 不必要的效率考虑往往是性能问题的万恶之源. ——William Allan Wulf 在第12章『速度的曲率』我们学习如何用Instruments来诊断Core Animation性能问题.在构 ...