想象一下,我有这样的事情:

<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

07-26 04:42