发表于: 2017-10-24 23:32:16

1 608


今天完成的事:
1、完成了部分公司详情页
明天计划的事:
1、继续公司详情页的制作
遇到的问题:
1、之前用filter进行自定义过滤的时候,对于它的原理其实一直是迷迷糊糊的,今天总算弄明白了。自定义过滤通常跟constant常量表一起用,而常量表有两种写法。
一种是对象的形式,如
.constant("type",{
0:"首页banner",
1:"找职位banner",
2:"找精英banner",
3:"行业大图"
})
相应的过滤器写法
.filter("typeFilter", function (type) {
    return function (index) {
        return type[index]
};
})
这种写法的意思是设置一个名为typeFilterfilter,注入名为type的constant对象,返回一个函数,这里的index变量是过滤前的数值,再次返回结果,结果为type对象的index属性对应的属性值。之前一直把方括号理解为下标,其实并不是,当访问对象时,方括号表示访问对象的属性。

另一种是数组的形式,如
.constant('articleType',[
{id:0,name:'首页banner'},
{id:1,name:'找职位banner'},
{id:2,name:'找精英banner'},
{id:3,name:'行业大图'}
])
有时候我们把过滤器写成这样
.filter("typeFilter", function (articleType) {
    return function (index) {
        return type[index].name
};
})
其实这种写法并不可取。当访问数组时,方括号表示数组对象的下标。这种写法看似也能过滤出前面那种写法的结果,但实际上,如果变量index值不是从零开始,或者是一堆无规律的数字,那么这种写法的结果就是错的。对此,正确的写法应该是用for或者Angular.forEach
.filter('typeFilter', function (articleType) {
    return function (index) {
        for (var i = 0; i < articleType.length; i++) {
            if (articleType[i].id== index) {
                return articleType[i].name;
                }
            }
        }
    })
.filter('typeFilter', function (articleType) {
    return function (index) {
        var name;
        angular.forEach(articleType, function (data) {
            if (data.id == index) {
                name = data.name;
            }
        });
    return name;
    }
})
收获:
对过滤器又有了新的认识。
复盘项目。
     任务开始时间:2017.10.12
     预计demo时间:2017.10.31
     是否有延期风险:无



返回列表 返回列表
评论

    分享到