javascript - AngularJS - 为什么有多个 Controller

标签 javascript angularjs

AngularJS 应用程序中有多个 Controller 的原因是什么?我现在已经构建了一些 Angular 应用程序,我从来没有遇到过我认为多个 Controller 会使我的事情变得更容易的问题。

我还是个菜鸟,从来没有写过单元测试,而且我的代码也没有达到应有的可管理性,所以我敢肯定这只是无知。而且我听说其他人有多个 Controller 。

换句话说:人们怎么知道他们应该创建一个新的 Controller ?

最佳答案

据我所知,Angular 应用程序应该为不同的范围使用不同的 Controller 。例如,几乎所有应用程序都有用户数据。您需要将此数据附加到用户 Controller 内的用户模型:

function UserCtrl ($scope) {
    $scope.user = {
        name: "bmorrow",
        lastLogin: "4/16/2013"
    };
}

模板(我们的 View )将位于应用程序结构的特定部分内。例如,导航栏的右侧,或用户详细信息页面上。我们通过使用 ng-controller 为它分配一个 Controller 来确定这部分的位置。这将创建所述 Controller 的 scope 并将相应的模型绑定(bind)到它。模型(我们的数据)通过 Controller 连接到 View (HTML)。

假设应用程序有一个用于用户所写文章的页面。我们可以创建另一个 Controller ,仅限于专门保存文章内容的 HTML 部分。

function ArticleCtrl ($scope) {
    $scope.article = {
        title: "Hello World",
        body: "Lorem ipsum...."
    };
}

在上面的简单示例中,组合两个 Controller 不会造成任何损害。但是一旦你的应用程序开始增长,根据它所代表的数据逻辑地组织你的 Controller / View 将使你的代码更清晰,更容易理解。减少不必要的复杂性会让一切对您来说更容易。对所有事物使用一个 Controller 是一种不必要的复杂性。

您也可以在 Basarat 的回答中看到这一点。您不一定需要为每个路由使用一个 Controller ,但这样做有助于在逻辑上构建应用程序。

因此,要回答您的问题,您通常应该为每一类数据配备一个 Controller 。用户、文章、水果、蔬菜、交易等。

了解 Angular ControllersModel-View-Controller模式以获取更多信息(如果您还没有的话)。我希望这会有所帮助。

关于javascript - AngularJS - 为什么有多个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16073536/

相关文章:

javascript - 移动数组中指定的字符

javascript - 制作 Cordova 地理定位函数以返回位置

javascript - Angular Material : Nested grid

javascript - 值属性的输入类型 ="time"绑定(bind)不会使用 Angular 更新 UI

javascript - ngRepeat with ngAnimate 在我的元素上设置 "data-ng-animate= 2"

javascript - 10 小时后删除 Firebase 子级

javascript - 如何使用 jQuery 将单击时 div 的位置更改为父 div 的中心?

javascript - 谷歌API : Infowindow Content Issue

angularjs - 将 Angular 与 Grails 一起使用时出错

javascript - 基本的javascript代码布局