2015-07-21 78 views
0

我一直在试图弄清楚这一点,但我找不到描述它的任何地方,我的测试没有给我任何答案。ng控制器和控制器属性之间的差异

我已经创建了自定义指令,我希望指令的作用域是父作用域的子作用域。我发现了解决这个问题的两种不同方法。

答:

angular.module('myModule').directive('myDirective', function(){ 
    return{ 
     scope: true, 
     template: '<div>{{var}}</div>', 
     controller: function($scope){ 
      $scope.var = 123; 
     } 
    }; 
}); 

B:

angular.module('myModule').directive('myDirective', function(){ 
    return{ 
     scope: false, 
     template: '<div ng-controller="MyController">{{var}}</div>' 
    }; 
}); 

angular.module('myModule').controller('MyController', function($scope){ 
    $scope.var = 123; 
}); 

什么是这两种方法之间的差异?两者似乎都是我想要的,但是使用其中一种方法会有一些优点/缺点吗?

任何指导表示赞赏。

回答

2

除非您有充分理由这样做,否则不应使用后者。如果你想创建一个可重复使用的控制器和使用,在你的指导,只要定义指令这样:

angular.module('myModule').directive('myDirective', function(){ 
    return{ 
     scope: false, 
     controller: 'MyController', 
     template: '{{var}}' 
    }; 
}); 
1

第二种方法将允许您在多个元素上重用控制器。第一个是直接的,可以分享的。

1

选项B似乎能够共享控制器。但是,从设计角度来看,控制器不应该共享。控制器应该包含一些特定的业务逻辑。

如果某些模型/操作要共享,请提取到服务。

相关问题