Comments (7)
You can reference any component in Vue with ref
attribute (https://vuejs.org/v2/api/#vm-refs):
<template>
<div>
<button @click="fit"></button>
<vl-map>
<vl-view ref="view"></vl-view>
</vl-map>
</div>
</template>
<script>
export default {
name: 'app',
methods: {
fit () {
// all tagged with ref attributes components now available at this.$refs.*
// vuelayers components are mounted asynchronously, you should avail $mountPromise
this.$refs.view.$mountPromise.then(() => {
return this.$refs.view.fit([0, 0, 10, 10])
})
// access ol.View instance
console.log(this.$refs.view.$view)
}
},
}
</script>
from vuelayers.
THANKS!
from vuelayers.
Just commenting from my experience of going this route - I feel like this breaks MVVM pattern a bit and the Vue documentation seem to try to dissuade use of vm.$refs (calls it an escape hatch). It does seem to pull the child VM code into the parent VM. I don't know how else you would do it though other than triggering a method call from an observable in the parent VM, which is not very intuitive. It is a tough problem.
from vuelayers.
I totally agree with you, but I can't anything better yet.
from vuelayers.
I'm new to Vue but I think the clean solution involves events. The parent emits a "FitCommand" event and the child listens to it and calls its own fit method. More details here:
Parent-Child communication in VueJS
from vuelayers.
Thank you for advise! It could be tricky to control animation methods like fit
and animate
due to asynchronous nature of them, i.e. it would be not so explicitly in my opinion.
But $mountPromise
already can be replaced with mounted
event listener on the vl-view
tag.
What I should to add is providing instance as mounted
/created
event argument to avoid using of ref
attribute. I did not think about it at once. Thank you! 👍
from vuelayers.
Thanks for the discussion. Not saying this is the way to go either, but thought I would add that I've done asynchronous events with parent/child components before (not in VUE) and what I did was publish and subscribe on both sides -
For example the parent publishes a FIT message, and the child publishes a FIT_COMPLETE message when the async callback is called. I passed a "parent guid" to the child constructor so it knows it's parent, and the child adds this guid in the FIT_COMPLETE message so the parent knows to react to only it's child.
There is probably a better way but that's what I did.
from vuelayers.
Related Issues (20)
- Vuequery missing peer HOT 1
- Label Vector Fonts don't' have the right rendering [BUG] HOT 4
- Access feature in drawFinsihCondition? HOT 2
- When using vl-geom-line-string or vl-geom-multi-line-string the map tiles arent loaded correcty anymore. HOT 2
- Web browser freezes when trying to view the demo HOT 1
- Dependency conflict installing vuelayers with NPM HOT 2
- unmount maps HOT 2
- Demos not working in Webpack install HOT 6
- Add a scale bar?
- tilePrefix not added when working with GWC HOT 2
- style-box gone in v0.12 HOT 2
- TileJSON source HOT 2
- m
- Using filters for tile layers HOT 1
- Support for Openlayers 7 HOT 4
- error occurs when activating the tab which contains vuelayers HOT 1
- Change to tileSize in 0.12 HOT 4
- forEachFeatureAtPixel layerFilter not excute in right way HOT 3
- Validate draw
- vl-style-text problem
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vuelayers.