因此,我正在阅读有关迁移到 Angular 2.0 的信息,并试图了解指令/组件可以相互通信的更好方式。
我遵循了这里的一些指导方针,这些指导方针建议利用基于命名空间的继承在指令之间共享信息。(这个)
它建议:不要使用 $scope.someFunction(),而是使用 $scope.container.someFunction()。变量也是如此。代替 $scope.variable,使用 $scope.container.variable。
所以,目前在我的项目中,我几乎没有需要相互沟通的指令(更多的父子关系)。
因此,我在Angular 1.4之后使用 bindToController 将容器从父指令传递到其所有子指令。
directive ('myDirective', function () {
return {
restrict: 'E',
scope: {},
bindToController: {
container: '='
},
controllerAs: 'ctrl',
templateUrl: 'components/my-page.html',
controller: MyController
};
并从父指令传递它
<my-directive container="container"/>
由于我有许多需要绑定的变量,将所有这些变量移动到容器中并绑定整个容器是否很好?就像是:
$scope.container = {
variable1: ...
variable2: ...
function1: ...
function2: ...
}
或单独绑定它们?
bindToController: {
variable1: '=',
variable2: '=',
....
},
另外,我读到我也可以使用链接来绑定,这让我更加困惑。我应该使用下面的链接吗?还是上面的 bindToController 来绑定整个容器?
link: function($scope, $element, $attrs, controller) {
// access controller.container.variable1 here
}
有没有好的设计实践?迁移到 Angular2.0 的优缺点和难易程度?
我知道这是一个开放式的问题,但是一些指导,常见的做法会非常有帮助。