2015-08-21 4 views
0

Есть ли способ, чтобы иметь директивы bootstrap js (встроенные атрибуты тегов) работать в файле углового шаблона?Bootstrap JS в файлах угловых шаблонов не работает

Все JS-библиотеки загружены правильно, в том числе код инициализации js для использования popovers. Угловой шаблон правильно загружен с использованием углового маршрутизатора.

Все функции bootstrap js не могут быть запущены/обнаружены в угловых шаблонах, есть ли что-то, что я делаю неправильно или это ожидаемо, и есть ли способ заставить его работать, не меняя html (я смотрел на угловые bootstap пользовательский интерфейс, но он требует переписав HTML)

Супер упрощенный:
Twig шаблона:

<div class="col-md-12" ng-app="builderApp"><div ng-view></div></div> 

Угловой шаблон:

<i class="fa fa-info-circle" data-toggle="popover" data-content="woop woop"></i> 

Угловые JS:

var builderApp = angular.module('builderApp', ['ngRoute', 'xeditable']); 
    builderApp.config(['$routeProvider', function($routeProvider) { 
     $routeProvider. 
      when('/', { 
       templateUrl: template_path + 'root.html', 
       controller: 'rootController' 
      }) 
    }]); 
    builderApp.controller('rootController', function($scope, directoryFactory) { 
     $scope.directory = directoryFactory.getDirectory(); 
    }); 
+0

Вы включили модуль загрузочного модуля в свой прикладной модуль? Не забываете ли вы об инъекционном модуле? – dhavalcengg

+0

Извините, я пропустил создание модуля, но когда вы говорите модуль начальной загрузки, что есть модуль начальной загрузки, который вы должны ввести, чтобы работать с нормальной загрузкой js? – mr12086

+1

вы хотите использовать bootstrap.js напрямую, не проходя через угловой жизненный цикл. Это не сработает, потому что все ваши шаблоны загружаются асинхронно, и ваш bootstrap.js ничего не знает об этом. Лучше использовать угловую оболочку поверх бутстрапа, например, угловой интерфейс. В противном случае вы можете написать свои собственные директивы, которые нецелесообразны, потому что вам нужно это поддерживать. : – dhavalcengg

ответ

0

я бы, безусловно, использовать Angular Bootstrap Directive. Я никогда не видел, чтобы это делалось иначе. Это даст вам доступ к типичному загрузочному CSS, а также к интерактивным функциям в угловом бутстрапе. Я также предпочитаю использовать ui router.

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"/> 
<script src="scripts/vendors/ui-router-master/release/angular-ui-router.min.js"></script> 
<script src="scripts/vendors/ui-bootstrap-tpls-0.13.0.min.js"></script> 


    var app = angular.module('BuilderApp', ['ui.router','ui.bootstrap']); 

    app.config(['$stateProvider', '$urlRouterProvider', 
     function ($stateProvider, $urlRouterProvider) { 
      $urlRouterProvider.otherwise("/login"); 
      $stateProvider 
       .state('login', { 
        url: '/login', 
        title: 'Login', 
        templateUrl:'views/loginView.html', 
        controller: 'loginCtrl'), 

       }) 
       .state('account', { 
        url: '/account', 
        title: 'My Account' 


        views: { 
        'navigation': { 
         templateUrl: 'views/navigationView.html', 
         controller: 'navigationCtrl' 
        }, 
        'content': { 
         templateUrl: 'views/contentView.html', 
         controller: 'navigationCtrl' 
        } 
       }    
       }) 
      .state('account.dashboard', { 
       url:'/dashboard', 
       title: 'Dashboard', 
       views : { 
        'pageContent': { 
         templateUrl:'views/dashboardView.html', 
         controller: 'dashboardCtrl' 
       } 
      }    
      }) 

И затем убедитесь, что вы вводите маршрутизатор в контроллер.

app.controller('navigationCtrl', function ($scope, $stateParams, $location, $state) {