【发布时间】:2016-11-27 08:25:56
【问题描述】:
我创建了一个自定义组件,该组件可以访问设备的相机以拍摄照片,将其设置为ImageView 的来源,然后将其保存到文件中。
这是Javascript代码
CAMERA.JS
这里是imageView的初始化
export function cameraLoaded(args):void{
cameraPage = <Page> args.object;
imageView = <Image> cameraPage.getViewById("img_upload");...
}
这里我将imageViews'source设置为刚刚拍的照片
export function takePicture():void{
camera.takePicture(
{
})
.then(
function(picture){
imageView.imageSource = picture;
},function(error){
});
}
这很好用。
现在我尝试将图片保存到文件中。
export function saveToFile():void{
try {
let saved = imageView.imageSource.saveToFile(path,enums.ImageFormat.png);
HalooseLogger.log(saved,"upload");
})
}catch (e){
...
}
}
这里出现错误cannot read property saveToFile of undefined
这很不寻常,其实如果我console.log(imageView)这里是输出:
Image<img_upload>@file:///app/views/camera/camera.xml:4:5;
但如果我 console.log(imageView.imageSource) 我看到它是“未定义”。
这怎么可能?我做错了什么?
附加信息 前面的代码和相关的xml包含在另一个视图中如下:
MAIN.XML
<Page
xmlns="http://schemas.nativescript.org/tns.xsd"
xmlns:cameraPage="views/camera"
loaded="loaded">
<StackLayout orientation="vertical">
<StackLayout id="mainContainer">
<!-- DYNAMIC CONTENT GOES HERE -->
</StackLayout>
</StackLayout>
</Page>
MAIN.JS
这是动态加载相机视图
export function loaded(args):void{
mainPage = <Page>args.object;
contentWrapper = mainPage.getViewById("mainContainer");
DynamicLoaderService.loadPage(mainPage,contentWrapper,mainViewModel.currentActive);
}
loadPage 方法执行以下操作:
public static loadPage(pageElement,parentElement,currentActive):void{
let component = Builder.load({
path : "views/camera",
name : "camera",
page : pageElement
});
parentElement.addChild(component);
}
【问题讨论】:
标签: nativescript