2015-07-21 106 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似乎能夠共享控制器。但是,從設計角度來看,控制器不應該共享。控制器應該包含一些特定的業務邏輯。

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

相關問題