发表于: 2017-05-24 23:30:11
1 892
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
将侧边栏做成指令 ,实现刷新保持状态
明天计划的事情:(一定要写非常细致的内容)
了解富文本编辑器
遇到的问题:(遇到什么困难,怎么解决的)
AngularJS 的 factory 、 service 和 provider这三种都是提供服务的方式, 他们到底有什么区别呢?
factory
factory 可以认为是设计模式中的工厂方法, 就是你提供一个方法, 该方法返回一个对象的实例, 对于 AngularJS 的 factory 来说, 就是先定义一个对象, 给这个对象添加属性和方法, 然后返回这个对象, 例如:
// 过滤 Article 类型
.filter("articleTypeFilter", function () {
const articleType = ['首页Banner', '找职位Banner', '找精英Banner', '行业大图'];
return function (type) {
return articleType[type];
}
})
var app = angular.module('MyApp', []);
app.factory('MyFactory', function () {
// define result object of factory.
var result = {};
// add some property and method to the object
result.greeting = 'Hello from factory.';
// return the object;
return result;
});
最后 controller 拿到的就是 数组中根据下表返回的数组元素
articleType[type]
对象。
service
service 通过 new
运算符进行实例化, 可以认为是一个类型, 只要把属性和方法添加到 this
对象上即可, 不用显式返回什么对象, 比如下面的代码:
angular.module('admin')
.factory('ArticleManagementService', function ($http, pathProject) {
return {
//获取
getArticleList: function (params) {
return $http.get(pathProject.getArticlelist_url, {params: params});
},
//新增
addArticle: function (params) {
return $http.post(pathProject.addArticle_url, params);
},
//删除
deleteArticle: function (id) {
return $http.delete(pathProject.deleteArticle_url(id));
},
//获取单个
getArticle: function (id) {
return $http.get(pathProject.getArticle_url(id));
},
//编辑
editArticle: function (id, params) {
return $http.put(pathProject.editArticle_url(id), params);
},
//修改article的上架/下架
changeArticleStatus: function (id, status) {
return $http.put(pathProject.changeArticleStatus_url(id, status));
}
}
});
controller 主要就是就是调用后台接口获取的数据
provider
与 factory 和 service 稍有不同的是, provider 必须提供一个 方法, 该方法和 factory 要求是一致的,
最后 controller 拿到的对象就是 provider 的 方法返回的对象, 相当于下面的代码:
收获:(通过今天的学习,学到了什么知识)
使用 factory、 service 与 provider
factory、 service 与 provider 的使用都是通过 AngularJS 的依赖注入使用, 比如:
// inject factory, service and provider to a controller
angular.module('admin')
.controller('articleListCtrl', function ($scope, FileUploader, $state, ArticleManagementService, $rootScope) {
provider 可以在应用启动时进行配置
provider 的特殊之处就是可以在 module 启动时进行配置, 从而达到特殊的用途, 比如 可以在启动时调用这个方法, 进行一些额外的初始化工作: 可以 module 启动时来调用这个方法, 实现对 provider 的配置
评论