In Angular 1.5 I have a table in an <md-content>
. I dynamically add columns to the table, and at a certain point horizontal scrollbars appear. This is good.
But the bad part is that the new columns are not visible. How could I programmatically scroll my <md-content>
horizontally so that new columns are visible?
As I post in a comment, here you have a working plunker using angular-scroll-glue directive.
The key here is attaching scroll-glue-right
directive to your md-content
.
<md-content scroll-glue-right>
...
</md-content>
See complete code here
EDIT: If you want to scroll programatically instead of automatically like in the first plunker, you can bind scroll-glue-right
to a controller attribute. Example:
<md-content scroll-glue-right="glued">
...
</md-content>
When glued
is set to true
, scroll will be fired.
Working plunker here
Hope it helps
Have you looked into scrollLeft
? You can get the position of the scrolled element, and then scroll the parent to that position:
container.scrollLeft = childToScrollTo.getBoundingClientRect().left;
You could certainly build this into a directive if you needed to, or you can just run something like this after you add a column. Here's a quick demo:
var scroll = function(){
var container = document.getElementById('container');
var childToScrollTo = document.getElementById('scrollto');
container.scrollLeft = childToScrollTo.getBoundingClientRect().left;
}
#container{
white-space: nowrap;
overflow: auto;
width: 400px;
}
.child{
display:inline-block;
}
<button onclick="scroll()">scroll</button>
<div id="container">
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child" id="scrollto">scroll here!</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
<div class="child">child</div>
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With