70

我想将 AngularJS 和 Twitter Bootstrap 组合成一个全新的网络应用程序。似乎已经为 Bootstrap 编写了 AngularJS 指令

然而,仔细看,这些指令似乎并没有涵盖所有的 Bootstrap。我可以将 AngularUI Bootstrap 代码与原始 Bootstrap 代码结合起来以获得完整性吗?可以一开始就完成吗?

我偶然发现了另一个名为AngularStrap的 Angular 项目。我可以把这三个结合起来吗?

结合 AngularJS 和 Twitter Bootstrap 以获得完整性的最佳方法是什么?

4

3 回答 3

65

一般来说,Bootstrap 的 CSS 部分在 AngularJS 中的工作方式与在 Bootstrap JavaScript 中的工作方式完全相同。所以只要你只想使用Bootstrap CSS,你就不用考虑了。

对于几乎所有的 Bootstrap JavaScript 功能,AngularUI 提供了一种替代方法。例如,导航栏一般只适用于 CSS,所以只需查看 Bootstrap 文档并实现它。如果您需要导航栏的一些响应式功能,您将需要该collapse指令;例如,请参见此处:angular-ui navbar

因此,如果您认为 AngularUI 中缺少任何内容,您能否更具体地说明“还不够完整,无法涵盖整个 Twitter Bootstrap”?我不认为存在普遍的差距。

此外,http://angular-ui.github.io/bootstrap/是该任务最成熟的库。因此,如果您认为缺少某些功能,我强烈建议您对其进行修补并提出拉取请求。

于 2014-03-15T09:44:39.540 回答
17

可以通过编写您自己的 Angular 指令来组合代码,这些指令生成具有 Bootstrap 类的 HTML。我正在开发一个将 Bootstrap 与 Angular 相结合的类似 Web 应用程序。我在那里做的事情是这样的:

app.directive('trackerMenu', function(){
    return {
        restrict: 'E',
        templateUrl: "partials/menu.html"
    };
});

menu.html的内容是:

<nav class="navbar navbar-default navbar-fixed-top" role="navigation" ng-show="auth">
<div class="container-fluid">
    <div class="navbar-header">
        <a class="navbar-brand">Issue Tracker</a>
        <ul class="nav navbar-nav">
            <li class='toggleable'>
                <a ng-click="navigate('dashboard')"><i class="fa fa-home"></i>Dashboard</a>
            </li>
            <li class='toggleable'>
                <a ng-click="navigate('tasks')"><i class="fa fa-tasks"></i>Tasks</a>
            </li>
            <li class='toggleable'>
                <a ng-click="navigate('bugs')"><i class="fa fa-bug"></i>Bugs</a>
            </li>
            <li class='toggleable'>
                <a ng-click="navigate('statistics')"><i class="fa fa-bar-chart-o"></i>Statistics</a>
            </li>
            <li class='toggleable'>
                <a ng-click="navigate('team')"><i class="fa fa-users"></i>Team</a>
            </li>
            <li class='toggleable'>
                <a ng-click="navigate('profile')"><i class="fa fa-user"></i>Profile</a>
            </li>
            <li class='toggleable'>
                <a ng-click="navigate('settings')"><i class="fa fa-cog"></i>Settings</a>
            </li>
        </ul>
        <form class="navbar-form navbar-left" role="search">
            <div class="input-group">
                <input type="text" class="form-control" placeholder="Search">
                <span class="input-group-addon"><i class="fa fa-search"></i></span>
            </div>
        </form>
        <ul class="nav navbar-nav">
            <li>
                <a ng-click="logout()"><i class="fa fa-power-off"></i>Logout</a>
            </li>
        </ul>
    </div>
</div>
</nav>

该指令的使用方式如下:

<body ng-class="togglePadding()" ng-controller="RootCtrl">
    <tracker-menu></tracker-menu>
</body>

基本上,我的指令所做的是将 Bootstrap导航栏注入页面。

于 2014-03-15T09:53:21.247 回答
4

Angular Strap 支持导航栏,根据经验,您可以逐个模块地将 ui boostrap 与 angular strap 混合使用。这两个项目都允许您为自定义构建注入它们的组件,如下所示:

angular.module('myApp', [ 
    'mgcrea.ngStrap.modal',
    'mgcrea.ngStrap.aside', 
    'ui.bootstrap.popover'
   ]);

但是,它们可以并且将会相互冲突。IE 你不能在同一个项目中同时拥有 ui-bootstrap modal 和 angular strap modal。此外,两个项目中的一些指令依赖于其他模块,例如,Angular Strap 日期选择器依赖于工具提示指令。

于 2014-08-02T06:18:22.127 回答