多个鸟舍羽毛

时间:2014-06-06 16:43:21

标签: javascript aviary

我对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

为什么呢?我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

对于您的第一个问题,为什么只调用第二个onSave

Aviary Web SDK在内部将羽毛配置存储在AV.launchData中,而AVAviary全局变量的别名。这是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 });