I am trying to write a native script app which retrieves the rendered height of the bottle
view/element in my xml. I have tried the following code, but unfortunately, I get an error (shown below). Any guidance would be much appreciated.
JS:
var viewModule = require("ui/core/view");
var page;
exports.fabTap = function (args) {
page = args.object;
var bottle = page.getViewById("bottle");
console.log("Height: " + bottle.height);
}
XML:
<Page xmlns="http://schemas.nativescript.org/tns.xsd" xmlns:FAB="nativescript-floatingactionbutton" actionBarHidden="true" loaded="pageLoaded">
<GridLayout columns="*, *, *, *" rows="15*, 5*, 20*, 5*, 5*, 5*, 5*, 20*, 20*" width="100%" height="100%" style.backgroundColor="white" >
<Image src="res://logo" row="0" col="1" colSpan="2" stretch ="aspectFit" class="logo"/>
<Image id="bottle" src="res://bottle_outline" row="2" col="0" rowSpan="6" colSpan="2" stretch="aspectFit"/>
</GridLayout>
</Page>
Cannot read property 'height' of undefined.
This is because in the fabTap
handler, args.object
is not the page but the FAB widget itself. So when you call getViewById
it searches the view hierarchy of the FAB widget, and there is no bottle there :) You should change your code as follows:
var viewModule = require("ui/core/view");
var page;
exports.pageLoaded = function (args) {
page = args.object;
}
exports.fabTap = function (args) {
var bottle = page.getViewById("bottle");
console.log("Height: " + bottle.height);
}