我对Aviary Feather的整合存在问题。 在我的javascript中,我需要像这样使用Feathers:
// Aviary init
var featherProductEditor = new Aviary.Feather({
apiKey: 'myapykey',
apiVersion: 3,
theme: 'dark',
tools: 'all',
appendTo: '',
onSave: function(imageID, newURL) {
// Do things for featherProductEditor
console.log('featherProductEditor');
// Close the editor
featherProductEditor.close();
}
});
// Aviary init
var featherContentBlockEditor = new Aviary.Feather({
apiKey: 'myapykey',
apiVersion: 3,
theme: 'light',
tools: 'all',
appendTo: '',
onSave: function(imageID, newURL) {
// Do things for featherContentBlockEditor
console.log('featherContentBlockEditor');
// Close the editor
featherContentBlockEditor.close();
}
});
然后我打电话给两个羽毛
featherProductEditor.launch({ ....
和
featherContentBlockEditor.launch({ ....
但是唯一的“ onSave *:”回调是第二个“ featherContentBlockEditor ”var
为什么呢?我该如何解决这个问题?
答案 0 :(得分:3)
对于您的第一个问题,为什么只调用第二个onSave
?
Aviary Web SDK在内部将羽毛配置存储在AV.launchData
中,而AV
是Aviary
全局变量的别名。这是Aviary.Feather
函数的代码段:
AV.Feather = function (config) {
...
AV.launchData = AV.util.extend(AV.baseConfig, config);
...
}
因此,这意味着featherContentBlockEditor
的配置会覆盖featherProductEditor
的配置。
您可以在创建每个羽毛后添加AV.launchData.onSave()
来验证这一点。
关于第二个问题,我该如何解决?
不,你不能不侵入SDK。这就是Aviary Web SDK的工作方式,每页只定义一个Aviary.Feather
个实例。
答案 1 :(得分:1)
你怎么解决?
您可以使用imageID
来识别哪个Aviary实例产生了onSave事件。
onSave: function(imageID, newURL) {
if(imageID === 'productImg') {
// Do things for featherFeatureEditor
console.log('featherProductEditor');
} else {
// Do things for featherContentBlockEditor
console.log('featherContentBlockEditor');
}
// Close the editor
featherContentBlockEditor.close();
}
使用image:'productImg'
作为产品图片的启动配置。
答案 2 :(得分:0)
您在给定页面上只能拥有一个Aviary编辑器实例,但您可以通过调用来重复使用它:
editor.close(true); // passing true forces an immediate close without triggering shutdown animation
editor.launch({ image: new_id, url: new_url });