javascript - 让两个 Angular Controller 共享相同的 DOM 元素是一种不好的做法吗?

标签 javascript html angularjs

假设我有这样的东西:

<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/

相关文章:

javascript - 访问事件元素 JavaScript(有或没有 Angular )

javascript - 使用 ng-model 标记复选框的值 ANGULAR.JS

javascript - 在for循环中获取每个div id

PHP json 编码和 JS JSON.stringify

html - ASP.NET View 中文本旁边的图像

html - 垂直居中的元素在顶部留下空白空间

javascript - 单击时永久更改单选按钮的颜色

javascript - 在 Angular 7 中处理二维数组。 ngFor

jquery - Jquery获取当前表格行的Id

javascript - 在模式关闭后捕获 Angular Bootstrap UI $uibModal 关闭事件