【总结】angularJs

1、表单验证(只适合校验type存在的类型,不存在的类型要用指令的require:ngModal进行验证)

form标签,定义name

input标签,设置type类型(email、name等),name 和ng-modal和required(必填就要有required)

1:未修改的表单
这是一个布尔类型的属性,用来判断用户是否修改了表单,如果未修改,值为true否则为false
formName.inputfieldName.$pristine
2:修改过的表单
只要用户修改过表单无论输入是否验证通过都返回true
formName.inputfieldName.$dirty
3:合法的表单
这个布尔属性用来判断表单的内容是否不合法,如果当前的表单内容是合法的。该属性就返回为true
formName.inputfieldName.$valid
4:不合法的表单
这个布尔属性用来判断表单的内容是否不合法,如果当前的表单内容是不合法的,该属性就返回为true
formName.inputfieldName.$invalid
5:错误
这是angular提交的另一个非常有用的属性:$error对象,她包含当前表单所有的验证内容。以及它们是否合法的信息,可以这样来访问formName.inputfieldName.$error,如果验证失败这个属性值为true,如果值为false说明通过了验证。

   

必填项:验证表单输入是否已经添加 之前在dom元素上加上required标记即可

<input type="text" required/>

最大/小长度:验证表单输入的文本是否小/大于某个最小值,可以在输入的字段上使用指令 ng-maxlength="{number}"/ng-minlength="{number}"

<input type="text" ng-minlength="5" ng-maxlength="15"/>

电子邮件:验证输入的文本是否是电子邮箱可以使用 type=email来实现

<input type="email" name="email" ng-model="user.email" />

是否数字:验证输入的文本是否是为数字可以使用 type=number来实现

<input type="number" name="age" ng-model="user.age" />

URL:验证输入的文本是否是为url可以使用 type=url来实现

<input type="url" name="homepage" ng-model="user.homepage" />

angular内置的验证指令

匹配模式:使用ng-pattern="/PATTERN/"来确保输入能匹配指定的正则表达式

<input type="text" ng-pattern="[a-zA-Z]"/>
<form name="signup_form" novalidate ng-submit="signupForm()">
        <div>
            <label>用户名</label>
            <input type="text" placeholder="Name" name="name" ng-model="signup.name" ng-minlength=3 ng-maxlength=20 required />
            <div class="error" ng-show="signup_form.name.$dirty && signup_form.name.$invalid">
                <small ng-show="signup_form.name.$error.required">姓名必填</small>
                <small ng-show="signup_form.name.$error.minlength">姓名最少三个字符</small>
                <small ng-show="signup_form.name.$error.maxlength">姓名最多20个字符</small>
            </div>
        </div>

        <div>
            <label>密码</label>
            <input type="text" placeholder="Name" name="name" ng-model="signup.name" ng-minlength=3 ng-maxlength=20 required />
            <div class="error" ng-show="signup_form.name.$dirty && signup_form.name.$invalid">
                <small ng-show="signup_form.name.$error.required">密码必填</small>
                <small ng-show="signup_form.name.$error.minlength">密码最少三个字符</small>
                <small ng-show="signup_form.name.$error.maxlength">密码最多20个字符</small>
            </div>
        </div>
        <button type="submit" ng-disabled="signup_form.$invalid" class="button radius">提交</button>
    </form>

2、$q.deferred

.factory('userService', ['$http', '$q', function ($http, $q) {

var userService = {}; // 返回的服务

this.urlForRandomUser = "https://randomuser.me/api/";

var that = this; // 获取当前作用域,下面要用到

userService.getRandomUser = function () {

var defered = $q.defer();

$http.get(that.urlForRandomUser)

.success(function (data) {

defered.resolve(data.results[0]);

})

.error(function (err) {

defered.reject(err);

});

return defered.promise; // 把defered对象中的promise对象返回出来

};

angular.module('soc.simba').factory('Simba', [
    '$q',
    '$http',
   , function $q, $http){
     var simba={}
simba.send = function(method, url, params, data){
    var deferred = $q.defer();
    $http({
        url: url,
        method: method,
        params: params,
        data: data,
        headers: {
            "Accept-Language": "zh_CN",
            "Content-Type": "application/json;charset=UTF-8"
        }
    }).then(function(resp){
        deferred.resolve(resp.data);
    },function(resp){
        deferred.reject(resp.data);
    }).finally(function() {
       不管成功失败都要执行的
    });
    return deferred.promise;   返回promise对象
};
     return simba;    最后返回simba
}

使用:

angular.module("soc.app.event").service("eventRuleService", [
    "$q",
    "Simba",
    eventRuleService
]);
function eventRuleService($q,Simba){
    return {
        upLoad:upLoad //导入规则
    };
    function upLoad(filename){
        var deferred = $q.defer();
        Simba.post('/api/v1/events/rules/import',{},{filename:filename}).then(function(res){
            deferred.resolve(res);
        },function(res){
            deferred.reject(res);
        });
        return deferred.promise;
    }
}

再在外层使用:

angular.module('soc.app.event').controller('eventRuleController',[
    'eventRuleService',
    'WebUploader',
    eventRuleController]);
function eventRuleController(eventRuleService) {
    //上传文件
    $scope.myUploader = WebUploader.create({
        server: "/storage/upload/",
        pick: '#selectLicFile',
        auto: true
    });
    $scope.myUploader.on('fileQueued', function (file) {
        let ext = file.ext;
        let size = file.size;
        if (ext !== 'dat') {
            serPNotify.error("规则格式不正确,请上传正确的规则");
            $scope.reUpload();
        } else {
            if (size >= 500 * 1024 * 1024) {
                serPNotify.error("规则大小不合法,请上传正确的规则");
                $scope.reUpload();
            }
        }
    });
    $scope.myUploader.on('uploadSuccess', function (file, resp) {
        eventRuleService.upLoad(resp.filename).then(function(resp){
            serPNotify.success('规则上传成功');
        },function (resp) {
            serPNotify.error('规则上传失败,请重新上传');
        });
    });
    $scope.myUploader.on('uploadError', function (file) {
        $scope.$apply(function () {
            serPNotify.error('规则上传失败,请重新上传');
            $scope.reUpload();
        });
    });
}

3、service和factory

定义服务

最好使用service:service是构造函数,不需要return

而factory是普通函数,所以要return

定义Service:app是模块   var app=angular.module("app");

app.service('MyService', function () {
  this.sayHello = function () {
    console.log('hello');
  };
});

.service()方法用来在我们模块里定义一个service服务,它接收一个字符串名字和一个方法作为参数。也就是说,当我们定义好一个service,就可以在我们的其他组件里注入和使用,比如controllers,directives和filters:

app.controller('AppController', function (MyService) {
  MyService.sayHello(); // logs 'hello'
});

用Factory进行同样的实现

app.factory('MyService', function () {
  return {
    sayHello: function () {
      console.log('hello');
    }
  }
});

  .factory()方法一样,接收一个字符串名字和一个方法两个参数,来定义一个factory, 和service一样,在其他地方注入使用。

  service在使用this指针,而factory直接返回了一个对象。

因为Service是一个构造函数,但Factory不是。在Angular的底层,当这段代码在Service构造函数初始化的时候,会去调用object.create()。而Factory就一个普通被调用的方法,所以它要显式地返回一个对象。

4、$http

$http({
    url: url,
    method: method,
    params: params,
    data: data,
    headers: {
        "Accept-Language": "zh_CN",
        "Content-Type": "application/json;charset=UTF-8"
    }
})

post请求的参数是data

get请求的参数是params

因为GET请求的参数都是在URL上的,服务器并不会读取http body里面的数据,这样我们传递的就是Params里的请求的参数了;如果想让服务器读取http body里面的数据那就需要用POST请求了,POST请求的参数就存放在body

angular的$http传值Content-Type默认是'application/json'
headers: {'Content-Type': 'application/x-www-form-urlencoded'}必须置于最后

5、ng-class满足判断条件

<span class="oringinal" ng-class="{false : 'disabled'}[checkedNum > 0 && dataRuleList.length > 0]" uib-tooltip="批量删除规则" ng-click="batchOperate('delete')">
    <i class="fa fa-trash"></i>
</span>

6、点击事件传参

<div class="col-md-3">
    <input type="text" class="form-control" ng-model="eventObject"/>
</div>
<button class="btn btn-primary" ng-click="eventConfigSearch('eventObject',eventObject)">查询</button>
$scope.eventConfigSearch=function(type,content){
  可以接收到input框输入的content
};

7、懒加载

 

8、指令校验ip

9、指令  可模糊查询的选择框

10、

 

 

 

 

 

 

 

 

 

 

 

 

、ng-true-value

当我们点击checkbox 选中复选框时,ng-model 的绑定默认值是true,取消选中时为false.

<input ng-model="checkboxModel"  type="checkbox" >//选中时,checkboxModel 等于 true

如果需要获取的值为字符串或者数字呢?

那么就需要用到 ng-true-value 和ng-false-value

选中checkbox 时:

<input ng-model="checkboxModel" type="checkbox" ng-true-value=" 'hello wolrd' " > //注意 ng-true-value 中的值 如果需要显示字符串的话必须使用单引号


取消选中checkbox 时:

<input ng-model="checkboxModel" type="checkbox" ng-false-value=" 'bye bye' " > 

 

 

 

 

 

 

 

 

 

、双向数据绑定 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值