我是一个刚接触angularjs 的菜鸟,所以在用angular时,会往controller里添加很多不必要的逻辑,当同事看到我写的代码时,说没有看下去的动力。作为一只积极向上的小菜鸟,我询问了同事也上网查询了一些相关面。其实用angular,应该把大部分业务逻辑和持久化的数据放在service里,并且这些数据可以在不同的controller之间使用,反而controller相对来说应该很薄。每次切换和刷新页面时,angular会清空当前的controller。angular提供了3种方法来创建并注册service。

1、factory

2、service

3、provider(我本身用的比较少,所以相关体会待以后补充)

简单说说它们的区别和用法:

1、用factory是创建一个对象,为它添加属性和方法,方便调用的时候返回想要的数据。

app.controller('myCtrl',function($scope,myFactory){

  $scope.hello = myFactory.getHello();

});

app.factory('myFactory',function(){

  var _hello = 'hello';

  var factory = {};

  factory.getHello = function(){

    return _hello;

  };

  return factory;

});

2、用service是用new关键字进行实例化。所以是在给“this”添加属性,然后service返回“this”。当把service传进controller以后,在controller里"this"上的属性就可以通过service来使用。

app.controller('myCtrl',function($scope,myService){

  $scope.hello = myService.getHello();

});

app.factory('myService',function(){

  var _hello = 'hello';

  this.getHello = function(){

    return _hello;

  };

  return factory;

});

3、provider这部分用的比较少,相关体会以后补上。