将Angular包含在Hackathon-Starter中

时间:2014-06-09 13:18:30

标签: angularjs express pug

我是个新手。我尝试将Angular包含在https://github.com/sahat/hackathon-starter Boilerplate中。我包括

//= require lib/ui-bootstrap-tpls-0.11.0

//= require lib/angular

将application.js和两个文件放入lib文件夹中。 尽管如此,该应用程序似乎还没有在Angular上运行。我做错了什么?我在哪里把我的代码用于控制器/指令等?

2 个答案:

答案 0 :(得分:2)

使用Hackathon-starter-angular (HSA)并不回答帖子中提到的问题。 HSA在layout.jade文件中全局包含AngularJS,这可能意味着所有路由都由AngularJS提供,并且这些页面不会被google等搜索引擎索引。

将AngularJS包含/注入hackathon-starter的另一个解决方案是在本地执行此操作。以下是如何执行此操作的步骤:

1)创建一个控制器,该控制器将委托给特定路由上的所有请求。将控制器置于例如angularEntry.js

exports.getPagesServedByAngular = function (req, res) {
    res.render('shop/index', {
        title: 'Entry point to AngularJS pages'
    });
};

2)需要app.js内的控制器

// reference the controller
var angularPagesController = require('./controllers/angular');
// use it
app.get('/shop', angularPagesController.getPagesServedByAngular);

3)在视图内部创建一个新文件夹(例如shop),并使用名称(例如index.jade)在其中创建新文件。该文件将作为Angular应用程序的入口点。在文件中粘贴以下代码:

extends ../layout
block content 
  .page-header
    h3 Services
    body(data-ng-app='miniApp')    
    p first test expression from views/index.jade: {{ 5 + 5 }}
    div(data-ng-view)

4)在public / js中为迷你应用程序创建app.js.对于测试purpases我只是把它放在里面:

angular.module('miniApp', ['ngRoute']);
angular.module('miniApp').config(function ($routeProvider) {
    $routeProvider
        .when('/', {
            templateUrl: 'views/test.html'
        })
        .when('/detailTest', {
            templateUrl: 'views/detailTest.html'
        })
});

5)在public / js / lib文件夹中下载angular.js和angular-route.js等库

6)在public / js / application.js中添加对它们的引用,如下所示:

//= require lib/angular
//= require lib/angular-route
//= require app

7)在public / views文件夹

中创建test.html和detailTest.html等测试页面

此时,应该整合Angular。因此,将客户端控制器/指令放在public / js文件夹中。

答案 1 :(得分:1)

有人制作了一个包含角色到hackathon-starter的分叉:https://github.com/squeezeday/hackathon-starter-angular