2016-04-09 17 views
0

Ich versuche, eine native Skript-App zu schreiben, die die gerenderte Höhe der bottle Ansicht/Element in meinem XML aufruft. Ich habe den folgenden Code ausprobiert, aber leider bekomme ich einen Fehler (siehe unten). Jede Anleitung würde sehr geschätzt werden.Zugriff auf Elementhöhe in NativeScript

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> 

Kann nicht Eigenschaft 'Höhe' von undefined lesen.

Antwort

1

Dies liegt daran, in dem fabTap Handler, args.object nicht die Seite ist aber die FAB-Widget selbst. Also, wenn Sie anrufen getViewById es durchsucht die Ansichtshierarchie des FAB-Widget, und es gibt dort keine Flasche :) Sie sollten Ihren Code wie folgt ändern:

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); 
} 
+0

Vielen Dank für das oben Clearing, das scheint den undefinierten gelöst zu haben Problem. Aber ich bekomme jetzt "Höhe: NaN" -Druck zum Protokoll, warum könnte das sein? –

+1

@GeorgeEdwards Scheint, 'height' kehrt nur zurück, wenn Sie die Eigenschaft festlegen und nicht die tatsächliche zurückgeben. Versuchen Sie, 'bottle.getMeasuredHeight()' zu drucken und sehen Sie, ob es einen Unterschied macht. –