假设我有这样的东西:
<html ng-app="myApp">
...
<body ng-controller="GlobalController">
<div id="one">...</div>
...
<div ng-controller="SpecificController" id="subPart">
<div id="two">...</div>
...
</div>
...
</body>
</html>
如您所见, Controller GlobalController
管理整个主体,而SpecificController
只控制subPart
。
在这种情况下,div#one
可以访问 GlobalController
,但是 div#two
链接到 GlobalController
和 SpecificController
。
我的问题是知道这样做是否是一种不好的做法,因为我认为为相同的 DOM 元素(例如 div#two
)设置 2 个 Controller 会导致冲突...
此外,如果这不是一个坏习惯,在这种情况下我应该注意什么?例如,我想我必须小心避免在两个 Controller 中使用相同的属性,对吧?
谢谢。
ps:不知道有没有人问过这个问题。我多次看到“我可以在同一页面中使用相同的 Controller 两次吗”这个问题,但这不是我的问题。
最佳答案
在我看来,这没有任何错误,您只是表明在您的 Controller 之间存在“继承”链,它允许对 DOM 的某些方面进行更精细的控制,这些方面可能具有与整个页面无关。
您关于共享属性的说法是正确的,因为子 Controller 将继承父 Controller 的属性:
function ParentCtrl($scope) {
$scope.test = "One";
}
function ChildCtrl($scope) {
console.log($scope.test); // Logs "One";
$scope.test = "Two"; // We've re-defined the variable as "Two"
}
但是,为了避免数据属性的冲突,我会尝试在代码中使 SpecificController
确实继承自 GlobalController
的代码非常明显。
关于javascript - 让两个 Angular Controller 共享相同的 DOM 元素是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475469/