发表于: 2017-04-01 12:57:26
1 1277
完成的事情:
开始搭建filter、sevice、directive等模块方法并初步使用
计划的事情:
建立信息筛选的filter方法
问题:
使用轮播图,对首页的“最新职位”内容进行合并,实现轮播效果,建立directive方法调用轮播图方法,以免轮播图不播的情况发生。
.directive('dCarousel',function(){
return function(scope,ele,attrs){
$('#'+attrs.id).carousel({
interval: 3000
});
}
})
根据样式,轮播图内仅留下内容部分,去除原封装的导航点和左右切换部分,在轮播图外添加图片按钮,并添加左右切换的点击事件。由于其他轮播图可能也需要,做成factory方法进行调用。
service.carLeft = function(id){
$('#'+id).carousel('prev');
}
service.carRight = function(id){
$('#'+id).carousel('next');
}
对向后台请求数据的方法进行封装。
由于$http方法是异步执行,若在controller中调用factory封装的方法,没法使用“=”对返回值进行赋值。
引用$q的defer对象(延时对象),使用其中resolve和reject方法,返回promise数据,并在controller调用方法后方,添加.then函数来读取返回数据即可。
方法:
service.http = function(met,Url,send){
// defer()创建延迟对象
// notify()传递中间过程
// resolve()成功
// reject()失败
// when()传递已有数据不产生延迟
var ajaxData = $q.defer();
$http({
method:met,
url:"/carrots-ajax/"+Url,
params:send
})
.success(function(data, status, headers, cfg){
ajaxData.resolve(data);
})
.error(function(data, status, headers, cfg){
ajaxData.reject(data);
});
return ajaxData.promise;
}
调用:
.http('get','a/article/search',{}).then(function(res){
global.data = res;
global.pic = global.data.data.articleList
//console.log(global.data);
console.log(global.pic);
});
收获:
factory、directive
评论