$scope
からcontroller
を のリンク機能に共有できることを知っていdirectives
ます。
たとえば、次のコードでは、宣言されたコントローラーから関数を呼び出して、ブラウザー コンソールに「Hello World」を出力できます。
.directive('myDirective', [function () {
return {
restrict : 'E',
replace : true,
controller: 'MyController',
templateUrl : 'directives/myDirective.tpl.html',
link : function (scope, elem, attrs, controller) {
scope.message = 'Hello World!';
}
};
}])
.controller('MyController', [function ($scope, $element, $attrs, $log, $timeout) {
// $timeout to wait the link function to be ready.
$timeout(function () {
// This prints Hello World as expected.
$log.debug($scope.message);
});
});
}])
わかりました、これはうまくいきます。
私の質問は次のとおりです。
- このアプローチでは、コントローラーとディレクティブの間で共有されるのは同じスコープですか?
- このアプローチを使用すると、どのような結果が得られますか? では要素を操作せず、 でのみ操作すると仮定しましょう。
DOM
controller
link function
- これでDOM要素を操作しないようにする必要があり
controller
ますか?、$scope
、$elem
などが同じでも?
これらは、 Angular Directive documentationで見つけられなかった質問です。