twitter bootstrap popover doesn’t work with angularjs

twitter bootstrap popover doesn’t work with angularjs

I was trying to use twitter bootstrap popover on my webpage when I discover that it doesn’t work when it is placed below a

with ng-repeat. It works fine at the top within a div class that doesn’t contain ng- does anyone know why did it happen and how can I work around the issue?

Students Without Team

<

I don’t see why this question got down-voted. It’s a good example on how to understand the principle of scopes in angular. A scope is basically attached to a DOM element. All the controllers, repeats, etc. will only work in this DOM element (the scope). When Boostrap creates a popover, it creates a new DOM element and appends it to body, so now it’s out of the scope (it is not in the element any more). That’s a key feature to understand about Angular.

Related:  Fluid or fixed grid system, in responsive design, based on Twitter Bootstrap

Luckily, Bootstrap has the solution. Popover has a container option that lets you append the popover to a specific element instead of body. Put there the jQuery selector of the DOM element that has the angular controller. http://twitter.github.io/bootstrap/javascript.html#popovers (see Options)

Solution 2:

At the moment there are at lest 2 projects that got Bootstrap’s popover directives for AngularJS written already:

The difference is that http://angular-ui.github.com/bootstrap/ is native AngularJS directives so you don’t need any 3rd party JavaScript dependencies.

Both projects are hosted on GitHub so you can see implementations and either learn from them, decide to change or just use one of the projects.

References