想象一下,我有这样的事情:
<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
管理整个 body ,而SpecificController
仅控制subPart
。在这种情况下,
div#one
可以访问GlobalController
,但是div#two
链接到GlobalController
和 SpecificController
。我的问题是知道这样做是否不好,因为我想象为相同的DOM元素(例如
div#two
)使用2个 Controller 会导致冲突...另外,如果这不是一个不好的做法,在这种情况下我应该注意什么?例如,我想我必须谨慎行事以避免在两个 Controller 中具有相同的属性,对吗?
谢谢。
ps:我不确定是否已经问过这个问题。我多次看到“我是否可以在同一页面中两次使用相同的 Controller ”这个问题,但这不是我的问题。
最佳答案
我认为这没什么不对,您只是在说明您的Controllers之间存在“继承”链,它可以对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"
}
但是,为了避免数据属性的冲突,我会尝试在代码中令人眼花obvious乱地表明
SpecificController
确实继承自GlobalController
。