gpt4 book ai didi

javascript - 将我的 Backbone 模型信息传递给 Cordova 相机插件的最佳方式

转载 作者:行者123 更新时间:2023-11-29 03:05:17 24 4
gpt4 key购买 nike

我正在尝试使用 Cordova + Backbone + Backbone.Marionette 创建一个移动应用程序屏幕,它将有一个相机的占位符图标(我也在使用 require.js 等,但认为这不相关到我遇到的问题)。当点击占位符时,它会调出 native 设备相机应用程序,然后用户可以拍照,占位符图标将替换为他们拍摄的照片。

我的问题是,一旦我真正到达拍摄照片的位置,用新照片更新我的 Backbone 模型的最佳方法是什么?在 Cordova 相机插件的成功函数(我下面的代码中的 cameraSuccess)中使用图片数据更新模型对我来说很有意义。但是我怎样才能将我的模型传递给成功函数呢?我知道我可以使用某种全局变量来完成此操作,但必须有更好的方法!

从下面的代码片段可以看出,当我的 View 触发拍照事件(picture:taken)时,我可以通过传递的 args 对象访问我的模型。但在我可以使用这个 args 对象之前,我需要调用相机 API,确保它成功,然后将结果输出放入我的模型中。

require(['app','views/cameraview','models/camera'],function(Application,cameraview,cammod){

document.addEventListener("deviceready",onDeviceReady, false);

function onDeviceReady()
{
//start the Marionette application
Application.start();

//create a new picture model with the placeholder picture
var cameramod = new cammod({ picture:"res/placeholder.png" });

//create a new view, this is basically just using an underscore template to shove the model's picture into an img tag.
var CameraView = new cameraview({model:cameramod});

Application.cameraregion.show(CameraView);

//When the placeholder img is tapped, the view triggers the picture:taken event
CameraView.on("picture:taken", function(args){

//**** here I have access to the model with args.model, but I don't know how to properly access that from cameraSuccess ****

navigator.camera.getPicture(cameraSuccess, cameraError, {
quality: 50,
destinationType: Camera.DestinationType.DATA_URL,
allowEdit: true,
saveToPhotoAlbum: true
});
});
}

//Camera API success callback function
function cameraSuccess(imageData){

//*** I need to set the model's picture as shown below, but have no access to the model ****
//args.model.set({picture:"data:image/jpeg;base64," + imageData});

}
function cameraError(message){

setTimeout(function() {
alert('Failed because: ' + message);
}, 0);

}
});

我认为我的问题很简单,我的应用程序逻辑代码的这一 block 应该足够了。但如果需要,我也可以包括我的 View 、模型、模板、应用程序或其他任何内容。

最佳答案

除了需要进行的明显清理之外,如果您在 onDeviceReady 函数中定义 cameraSuccess 函数,它将可以访问相关模型,因为它将成为闭包的一部分。

关于javascript - 将我的 Backbone 模型信息传递给 Cordova 相机插件的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com