angular filter等知识

部分知识来源

  1. Angular之自定义filter的用法
  2. Javascript parseFloat、parseDouble类型转换,数值加减,四舍五入
  3. Angular内置过滤器

自定义filter#

1.先自定义过滤器

var pmsApp = angular.module("pmsApp", ["ui.router", 'ui.bootstrap', 'ui.bootstrap.pagination','ngCookies','pascalprecht.translate'],function ($httpProvider) {
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/json';  
    $httpProvider.defaults.headers.post['X-Requested-With'] = 'XMLHttpRequest'; 
});

pmsApp.filter('sumColumn',function(){
    return function(data, key){
        if(typeof(data) === undefined || typeof(key) === undefined ) {
            return 0;
        }

        var sum = 0,
            i = data.length - 1;

        for(; i >= 0; i--) {
            sum += parseFloat(data[i][key] ? data[i][key] : 0);
        }

        return sum.toFixed(2);
    };
});

2.在视图上使用过滤器:

{{obj | filterName:参数1:参数2:...}}  //obj是要过滤的对象

3.在控制器里面使用:
首先需注入$filter之后才能使用,具体用法如下:

$filter(filterName)(要过滤的对象,参数1,参数2,...)

注:

$httpProvider.defaults.headers.post['Content-Type'] = 'application/json';  
$httpProvider.defaults.headers.post['X-Requested-With'] = 'XMLHttpRequest'; 

可以设置Content-Type 为 application/json ,但是如果ajax请求中参数传递不正确,还是有可能会报Content-Type的错误,比如
Content type 'application/octet-stream' not supported ,所以需要检查参数传递问题

Error:[$parse:lexerr]##

有关AngularJS代码不符合语法,导致报错

toFixed()##

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

var sum2 = (parseFloat(a)+parseFloat(b)+parseFloat(c)).toFixed(4)

语法NumberObject.toFixed(num)参数描述num必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。

$rootScope##

调用全局方法,获取返回值,给当前controller赋值

// 供应商分类
$rootScope.getSupplierClassificationArray(function(result){
    $scope.supplierClassificationArray = result;
    $scope.queryContent.supplierType = result.data[0].classNode;
});
// 履约情况
$rootScope.performStatusArray(function(result){
    $scope.performStatusSelect = result;
    $scope.queryContent.performStatus = result[0].value;
});

view代码 (设置value和text)

<select class="form-control" ng-model="queryContent.performStatus">
    <option ng-repeat="performStatus in performStatusSelect" value="{{performStatus.value}}">	{{performStatus.text}}
	</option>
</select>

注: 设置默认选中第一个正确方式为

$scope.queryContent.performStatus = result[0].value; // √
$scope.queryContent.performStatus = result[0]; // ×
原文地址:https://www.cnblogs.com/cuiyf/p/11340722.html