NativeScript相机并保存各种图片

时间:2016-05-28 10:09:09

标签: nativescript

我正在尝试拍摄各种照片,当我拍摄它们时,我希望它们出现在我的视野中。 我们的想法是将照片对象添加到模型中,该模型是一个Observable,并在视图中使用Repeater显示它们。

请注意,我只是为了调试它而不是图像对象,而是向 noteImages 添加一个简单的字符串。

我拥有的是:

视图模型:

function NoteViewModel(info) {
    info = info || {};
    var viewModel = new Observable({
        id: info.id || null,
        title: info.title || "title default",
        description: info.description || "description default"
        noteImages: [{src: "xxxx"}, {src: "yyyyyy"}]
    });
    return viewModel;

}

"控制器":

...

var noteViewModel = new NoteViewModel();
exports.loaded = function(args) {
    console.log("Loading note view...")
    page = args.object;
    page.bindingContext = noteViewModel;
};
...
exports.takePhoto = function(){

cameraModule.takePicture({width: 300, height: 300, keepAspectRatio: true}).then(function(imageSource) {
    var image = new imageModule.Image();
    image.imageSource = imageSource;
    noteViewModel.mainImage = imageSource;
    // noteViewModel.noteImages.push( {"src": "test"} );
    noteViewModel.noteImages.set([{src: "test"}]);
}

观点:

<Page loaded="loaded">
  <Page.actionBar>
    <ActionBar title="New note"></ActionBar>
  </Page.actionBar>
  <StackLayout>
    <Repeater items="{{ noteImages }}">
      <Repeater.itemTemplate>
        <Label text="{{ src }}" />
        <!-- <Image src="{{ src }}" /> -->
      </Repeater.itemTemplate>
    </Repeater>
  </StackLayout>
</Page>

注意:我知道我应该将imageSource添加到图像数组中,但出于测试目的,我只想看到另一个项目添加到noteImages并由转发器显示...

初始noteImages由转发器显示,所以我猜bindingContext正在按预期工作。问题是,当相机返回其imageSource并且我执行 noteViewModel.noteImages.set([{src:&#34; test&#34;}]); 时,视图为空。中继器无法接收新阵列......

Observable应该将属性noteImages上的更改自动传播到UI还是noteImages应该是一个ObservableArray本身?

我在这里缺少什么? :) 感谢

编辑:取得进展......

似乎如果一个Observable包含属于数组的属性,这些属性必须是 ObservableArray 类型,所以,我的模型现在是:

noteImages:新的ObservableArray({src:&#34; image1&#34;},{src:&#34; image2&#34;})

的内容
noteImages: [{src: "image1"}, {src: "image2"}]

拍完照片后我做了:

noteViewModel.noteImages.push( {"src":"aaaaaa"} )

我的观点显示了&#34; aaaa&#34;

0 个答案:

没有答案