发表于: 2017-04-23 22:14:05

1 1036


今天完成的事情:

完成了找职位banner图中左右箭头位置的调整;最新职位和推荐职位的切换效果;

完成了左侧职位标签效果;

使用svn管理代码;

明天计划的事情:

推荐公司部分竖线轮播图还没有解决,需要解决;

做搜索公司页;

遇到的问题:

布局真的很头疼;

收获:

angular中,controllerdirectivefactory分别该在何时使用?

1Controller            

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 中。

2Directive

Angular 1.x 中的一个奇葩问题就是把所有自定义的 HTML 扩展都叫做 Directive,引起了很多误会。Angular 中的 Directive 按用途分为三种:Component DirectiveAttribute DirectiveStructural DirectiveStructural Directive 是最特殊的,相当于一般 MVC 框架中 Template 的关键字,作用是影响 HTML 的文档结构而非特定元素,比如 ngRepeatngIncludengIfngSwtich 等。另外两种的话就很好分了,不出意外的话 restrict: 'E' 就是 Component Directiverestrict: 'A' 就是 Attribute Directive,前者作为一个独立元素(或者说组件)存在,比如 ngForm,后者影响现有元素/组件的某些效果。

Angular 的哲学理念就是保证 View 层尽可能的使用声明式语法(而非命令式语法),一切初始化相关的东西都放在 Controller 中(慎用 ngInit),所有需要用到 Controller 的地方都封装成自己的 Directive

3factory

所有与展示逻辑(或者说交互逻辑)无关的部分都应该写成 Provider(广义的)。



返回列表 返回列表
评论

    分享到