1. 程式人生 > >angularJs通過過濾器實現獲取資料字典

angularJs通過過濾器實現獲取資料字典

//快取資料字典
var dicMap =  JSON.parse(dictData);
/**
 * 獲取字典值的方法
 * @param key  關鍵字
 * @param type 大類
 * @return 返回結果對像 success為true,則value為字典值
 */
arm.getDict = function(key, type)
{
    var result = {};
    result.success = false;
    var dictValue;
    if (dicMap[type] && dicMap[type][key])
    {
        dictValue = dicMap[type][key].label;
    }
    if (dictValue)
    {
        result.success = true;
        result.value = dictValue;
    }
    return result;
};


// 登錄檔格字典值過濾器
arm.filter('Dict', function($rootScope , $http , $q)
{
    return function(input , type)
    {
        var returnVal = input;
        if (type)
        {
            var result = arm.getDict(input, type);
            if (result.success)
            {
                returnVal = result.value;
            }
        }


        return returnVal;
    }
});




//註冊下拉框表格字典值
arm.filter('dictOption', function()
{
    /**
     * data 迴圈的列表
     * key 對像的key屬性的屬性名
     * name 對像的顯示屬性的屬性名
     * type 字典大類
     */
    return function(data , key , name , type)
    {
        if (data && type)
        {
            //迴圈對每個選項進行過濾,過濾的結題是按
            angular.forEach(data, function(item , index)
            {
                //如果有這2個屬性
                if (item[key] && item[name])
                {
                    //如是取到字典值
                    var result = arm.getDict(item[key], type);
                    if (result.success)
                    {
                        item[name] = result.value;
                    }
                }
            });
        }
        return data;
    }
});