服务,提供商和指令之间的明显差异 - >调节器

时间:2015-01-05 06:37:42

标签: angularjs

所以,我的印象是Angularjs可能有点冗长,我想清楚地了解以下功能与何时使用它们之间的主要区别。我觉得'我理解,但线条有点含糊不清ethereal所以我希望其他人澄清。

  1. 之间的用法有何不同:它们在职责和使用方面似乎可以互换。

    一个。服务

    B中。工厂

    ℃。提供商

  2. module.controller与module.directive.controller有什么区别? 即:

  3. 
    var app = angular.module("someApp",[]);
    app.controller("someCtrl1", function(){
           // some code
    });
    

    这个用法,当它位于指令

    中时
    app.directive("someDirective", function() {
      return {
        restrict: 'E',
        template: '<p>Hello {{name}}!</p>',
        controller: function($scope, $element){
          $scope.name = $scope.name + "post1 ";
        },
        link: function(scope, el, attr) {
          scope.name = scope.name + "post2 ";
        }
      }
    }) 
    

    我对&#34;控制器&#34;有点朦胧在指令的返回内部。这个约定是什么,更详细?

2 个答案:

答案 0 :(得分:1)

  1. 简而言之,Service是工厂的包装器,而工厂是提供者的包装器。 该服务使用JS构造函数语法,而工厂使用JS函数语法。 但是,服务/工厂和提供商之间存在一个很大的区别,即配置阶段可以访问提供商,而前者则不可访问。 请参阅此详细信息answer

  2. 指令中控制器的主要用途是当您的指令具有隔离范围时,它不会耦合到父控制器,因此它具有独立的控制器。

    < / LI>

答案 1 :(得分:1)

1

您可以在this question

上找到明确的答案

另外我可以说:

服务结构简单

工厂结构复杂

提供商的结构更复杂

  1. module.controller与module.directive.controller之间没有区别。
  2. 我没有听说过使用module.directive.controller,正确的用法是;

    app.directive("myDir", ['$yourService',function($yourService){
       return {
          controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) {
                var that = this;
                //add sume property
    
                that = angular.extend(that, $yourService));
                return that;
            }]
       }
    }])
    

    基本上,您不需要每个指令的控制器属性。但是,如果您的指令是终端指令或父指令,并且您的子指令需要父指令的某些函数或属性,则需要在指令中使用自定义控制器。

    例如,如果你有一个具有子行和单元指令的table指令,那么table必须有一个控制器。