2

在 angular.js 应用程序中使用路由时,是否可以直接从服务器呈现特定路由的模板,然后将控制器附加到它?

例如,我有一个带有登录屏幕的应用程序和一个在用户登录时显示一些内容的屏幕。

  • 当用户未登录并打开应用程序时,如果我可以直接从服务器呈现登录路由的模板,然后将正确的控制器附加到它,那将是很酷的。这样用户就可以直接获得反馈,而不必等到 angular.js 被引导后,页面才会显示任何内容。
  • 当用户登录并打开应用程序时,我想直接从服务器呈现内容页面的模板,然后将控制器附加到它,就像您不使用来自 angular.js 的路由时所做的那样(使用例如 ng 控制器)。此页面上的某些内容将被隐藏,因为它需要附加控制器才能显示任何有用的内容。

我对 Angular 很陌生,我只是对 angular.js 和路由 api 进行了一些实验。但是在我的测试应用程序中,当我打开它时,它首先什么都不显示,然后当 Angular 被引导时,它会呈现“/”路由的视图。我想直接显示视图,因为某些信息不需要附加到它的控制器。我可以使用 ng-cloack 或 ng-bind 隐藏其他内容。但是这样会干净很多。

有没有人知道如何实现这一目标?如果我的解释仍然有点不清楚,请告诉我。我发现很难解释这个...

亲切的问候,

大安

4

1 回答 1

0

老实说,我从未尝试过这种解决方案,但我猜控制器模板不一定是静态文件。
您需要提供模板的路径,但可以动态创建。
例如:

angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'myApp.controllers']).
  config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/login', {templateUrl: 'partials/login.php', controller: 'LoginCtrl'});
    $routeProvider.when('/logout', {templateUrl: 'partials/logout.php', controller: 'LogoutCtrl'});
    $routeProvider.otherwise({redirectTo: '/login'});
  }]);

login.php 和 logout.php 必须返回一个有效的 AngularJS 模板。
我从来没有试过这个,但它应该工作。
我不知道这是否是 Angular 的做事方式。

于 2013-07-11T10:09:26.117 回答