我知道 a$scope
中的 acontroller
可以共享到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 文档中没有找到的问题。