发表于: 2017-05-25 23:37:57
2 1044
今天完成的事情:
今天在相博和雪峰的帮助下解决了昨天遇到的那个ui-view和controller的问题,并且成功用file uploader实现了图片上传至服务器,最后在解决了各种bug之后实现了新增页面的立即上线和存入草稿功能。
明天计划的事情:
开始任务10,搜索并学习富文本编辑器的相关知识。
遇到的问题:
昨天遇到的问题是对同一个ui-view,不同的路由使用不同的控制器不生效,
今天跟雪峰交流后得知他把所有需要放在控制器里的内容都放在一个controller里了,
这样就不会报错。我照着把我代码改了下,发现问题果然解决了。
虽然感觉像这样把不同页面的代码都写在同一个文件里将来不太好维护,但现在最起码实现了基本功能。
之后就想着要实现立即上线和存入草稿功能,首先是给新增页面的各个输入框添加双向绑定。
原理肯定还是通过$http的post请求把新增的标题、类型、说明、跳转链接、状态发送给服务器。
我看到项目里的代码写的很巧妙,他把所有$http需要用到的url写成了一个factory pathProject,
然后把表格的增删改查等功能集合到一个factory ArticleManagementService中,这个factory的
第二个元素是个函数,他依赖注入了pathProject以使用它的url,返回了一个方法,方法和函数间
以冒号连接。函数内又return了一个$http请求。相博说我们把$http写在controller里是不正确的
$http应该是服务的内容,照这么写就没问题了。
不过我要是照着这样写的话就会遇到传参的问题,params里的内容都是以$scope.xxx写入的,但是在服务里读取不到$scope的值。
没办法只能把这个factory变成一个方法搬到我的controller里。
angular.module("mainApp").factory("ArticleManagementService",function($scope,$http) {
return {
//新增
addArticle: function() {
return $http({
method: 'post',
url: "/carrots-admin-ajax/a/u/article",
params: {
title: $scope.title,
type: $scope.type,
content: $scope.content,
url: $scope.url,
status: $state.params.status,
img: $scope.img
}
});
}
}
});
变为
function addArticle(){
return $http({
method: 'post',
url: "/carrots-admin-ajax/a/u/article",
params: {
title: $scope.title,
type: $scope.type,
content: $scope.content,
url: $scope.url,
status: $state.params.status,
img: $scope.img
}
}).then(function (res) {
if (res.data.code === 0) {
alert("新增成功");
$state.go("pagetab");
} else {
alert(res.data.message);
}
})
}
这样倒也能用,不过$http前面的return还是后来报错找不到原因时试着加上去的,也不知道具体原因是为什么。
还有就是上线和草稿的区别就是status一个是1一个是2,这是接口文档里约定的内容。
收获:
虽然遇到很多bug很难受,但是解决bug的过程也锻炼了我的发现问题解决问题的能力,对angularjs的各种directive、factory、service、controller的用法有了更直观的感悟。知识不再是像以前那么抽象了。今天小课堂讲的是百度统计,百度作为最大的中文搜索引擎,在统计网站的流量方面功力还是很深厚的,且可以给出各种分析报告,对网站的运营、推广有所帮助。
评论