发表于: 2017-04-23 22:14:05
1 1036
今天完成的事情:
完成了找职位banner图中左右箭头位置的调整;最新职位和推荐职位的切换效果;
完成了左侧职位标签效果;
使用svn管理代码;
明天计划的事情:
推荐公司部分竖线轮播图还没有解决,需要解决;
做搜索公司页;
遇到的问题:
布局真的很头疼;
收获:
angular中,controller、directive和factory分别该在何时使用?
(1)Controller
Controller 虽然叫 Controller,但远没有后端框架中的 Controller 那么复杂的作用,Angular 1.x 中的 Controller,
说得不好听一下,就仅仅是一个初始化器(Initializer),进行相关的数据绑定(包括字段和方法)而已,一般的初学者用法如下:
myApp.controller('myController', ['$scope', 'itemService', function($scope, itemService) {
$scope.currentItem = itemService.current();
$scope.items = itemService.all();
$scope.add = function(item) {
itemService.add(item);
};
}]);
可以看到,上面的代码中,Controller 干的事情仅仅就是把相应的数据或者方法绑定到 ViewModel 中。
随着 Angular 1.2 中 Controller As 语法的到来,就不再需要 $scope 了:
myApp.controller('myController', ['itemService', function(itemService) {
this.currentItem = itemService.current();
this.items = itemService.all();
this.add = function(item) {
itemService.add(item);
};
}]);
Controller 唯一的作用就是初始化,除了从外部到 ViewModel 的简单赋值(或极其简单的运算外),其他所有过程都不应该出现在 Controller 中。
(2)Directive
Angular 1.x 中的一个奇葩问题就是把所有自定义的 HTML 扩展都叫做 Directive,引起了很多误会。Angular 中的 Directive 按用途分为三种:Component DirectiveAttribute DirectiveStructural DirectiveStructural Directive 是最特殊的,相当于一般 MVC 框架中 Template 的关键字,作用是影响 HTML 的文档结构而非特定元素,比如 ngRepeat、ngInclude、ngIf、ngSwtich 等。另外两种的话就很好分了,不出意外的话 restrict: 'E' 就是 Component Directive,restrict: 'A' 就是 Attribute Directive,前者作为一个独立元素(或者说组件)存在,比如 ngForm,后者影响现有元素/组件的某些效果。
Angular 的哲学理念就是保证 View 层尽可能的使用声明式语法(而非命令式语法),一切初始化相关的东西都放在 Controller 中(慎用 ngInit),所有需要用到 Controller 的地方都封装成自己的 Directive。
(3)factory
所有与展示逻辑(或者说交互逻辑)无关的部分都应该写成 Provider(广义的)。
评论