AngularJS外部控制器/查看文件

时间:2014-12-18 16:57:16

标签: angularjs requirejs angular-amd

如果我的主题足够描述,我会尽力描述我在做什么。我真的想学习和理解Angular,我来自Backbone.js。

我的设置是使用RequireJS Angular和AngularAMD(http://marcoslin.github.io/angularAMD/

我使用出去的路线设置了我的页面,并从视图目录中获取不同的视图。但是,我试图从主页面中取出导航并将其放在自己的外部视图中。

我觉得这很容易我只是不够精通Angular来做到这一点。我在想我需要一个navigationController,但我不知道如何加载外部视图,就像我可以使用路径一样。

angular
.module('app', [
    'ngRoute',
])
.config(config)

config.$inject = ["$routeProvider"];
function config($routeProvider) {
    $routeProvider
        .when('/', angularAMD.route({
        templateUrl: 'views/home.html', 
        controller: 'homeController', 
        controllerUrl: 'controllers/home'
    }))
}

所以这很简单,当我的网址是/它将加载home.html模板和适当的控制器。如何在其中加载导航模板,使其包含在所有页面上?我是否必须使用工厂或其他东西?

2 个答案:

答案 0 :(得分:1)

要在所有页面中获得导航,您有多种选择。最简单的是你可以将它直接放入主标记中。

<body ng-app="app">
   <div ng-include="'views/nav.html'"></div>
   <div ng-view></div>
</body>

你可以做的另一件事就是使用ui-router,但这会更有效,但根据你的使用情况,它可能是值得的。

答案 1 :(得分:0)

我只是希望每个人都知道我最终做的是将所有东西分成模块。现在我有一个页眉,页脚&amp;导航模块以及各种其他模块。

在“推荐设置”下准备好https://docs.angularjs.org/guide/module后,我觉得这可能是我想要完成的最佳方法。

  

虽然上面的示例很简单,但它不会扩展到很大   应用。相反,我们建议您将应用程序分解为   像这样的多个模块:

A module for each feature
A module for each reusable component (especially directives and filters)
And an application level module which depends on the above modules and contains any initialization code.