如何在angular-js中创建一个“顶级”控制器?

时间:2013-11-11 22:31:03

标签: javascript angularjs requirejs

AngularJS newbie here ....我在这里有一个应用程序的基本框架:

http://plnkr.co/edit/HlQvMKF735YrBL2tOYGf?p=preview

该应用程序包含一个app.js和几个子模型/控制器。

app.js:

var app = angular.module('MyApp', ["ngRoute","page1","page2"]);

app.config(['$routeProvider', function ($routeProvider) {

    //$routeProvider.otherwise({redirectTo: '/page1/'});  // this works just fine if uncommented

}]);

app.controller('MainCtrl', function($scope) {   // none of this works

    $scope.pageTitle = "Page Title";  //
    $scope.myName = 'Scott';

    $scope.hideSessionInfo = true;
    $scope.toggleSessionData = function() {
        console.log('toggleSessionData');
        $scope.hideSessionInfo = !$scope.hideSessionInfo;
    };
});

我希望有一个顶级控制器来处理ng-view之外的项目状态。 (即显示/隐藏一些服务器会话信息)

我不能让这个外层控制器工作。路线上的控制器工作正常。

我知道我在做一些根本错误的事情,但我无法弄明白。

更新

通过将ng-controller添加到正文并为其提供全局控制器名称来修复。

谢谢, 斯科特

1 个答案:

答案 0 :(得分:3)

<div ng-controller ="MainCtrl">
    <div ng-view></div>
</div>

通常应该有效。您需要通过指令附加控制器(此处为ng-controller和ng-view,它根据路径切换控制器)。