angularjs - 在 Angular 中同步多个 View

标签 angularjs

在过去的几天里,我们一直在为我们的 REST 服务编写一个新的基于 angular.js 的前端。到目前为止,一切进展顺利,我们已经构建了许多小页面和组件。

我们现在开始将这些东西集成到一个完整的应用程序中,并且想知道如何处理基于两个不同菜单的主视图。

我们希望所有这三个组件都根据某些全局状态进行更改。理想情况下由基于 url 的 $routeProvider 控制。

我们可以想出几种方法来做到这一点。然而,它们似乎都不正确,而且我们没有找到关于 Angular 开发人员如何设想这样做的明确文档。

一些简化的片段:

index.html

<!DOCTYPE html>
<html data-ng-app="myapp">
<head>
    ....snip...
</head>
<body>
    <div id="system-menu" data-ng-controller="MenuCtrl" data-ng-include="'partials/menu/system.html'"></div>
    <div id="main">
        <div id="main-menu" data-ng-controller="MenuCtrl" data-ng-include="'partials/menu/main.html'"></div>
        <div id="content" data-ng-view></div>
    </div>
</body>

应用程序.js

var myapp = angular.module('myapp', ['ngResource', 'ui']).
    config(['$routeProvider', function($routeProvider) {
        $routeProvider.
            when('/messages', {
                templateUrl: 'partials/messages.html',
                controller: MessagesCtrl
            }).
            when('/messages/:messageId', {
                templateUrl: 'partials/messages.html',
                controller: MessagesCtrl
            }).
            ...snip...
            otherwise({
                redirectTo: '/messages'
        });
    }]);

当用户单击指向/messages/1 的链接时,我希望将 Controller messagesCtrl 用于 View 。这很容易,并且可以按上面发布的方式工作。然而,我的 MenuCtrl 并没有“注意到”这种情况的发生,并且手动广播一条消息让它知道页面更改,以便它可以显示子菜单,这对我来说似乎很难看。因为此消息的唯一原因是更新菜单导致其他 Controller 的一些不需要的知识。

到目前为止,我们喜欢 angular.js 的文档,但在大局部门似乎缺少它。

任何人都可以向我们提供有关执行此操作的惯用方法的链接或一些指示吗?

最佳答案

为了让你的菜单突出显示工作,你可以在你的菜单 Controller 中设置一个简单的方法,它从 $location 中读取当前路径。提供者。(快速 mock )

// Within your controller.
$scope.isActiveUrl = function (route) {
    return route === $location.path()
}
// 
Within the view
ng-class="{ 'active' : isActiveUrl('your/path') }"

另见: How to highlight a current menu item?

关于angularjs - 在 Angular 中同步多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13416949/

相关文章:

Angularjs 文字双向绑定(bind)

javascript - 使用 AngularJS 的动态 URL

javascript - 基于两种不同形式的NG禁用按钮

angularjs - 无法破坏 Angular 带弹出框

html - 如何将默认菜单图标更改为 ionic 中的图像图标

javascript - AngularJS 1.2.0-rc.3 有什么变化阻止 ng-click 获得正确的模型值?

javascript - 使用 AngularJs NgResource 从本地主机加载 JSON 文件

javascript - 无法从 ngResource 对象访问属性

javascript - 无法在生产环境中实例化模块

javascript - $rootScope.$apply() 不工作