2017-10-09 43 views
0

我已经实现了图像裁切器的自定义控制器,该图像裁切器在内容部分中的媒体项目上打开叠加层。现在我可以在叠加显示屏上摆弄农作物,但是当我选择“保存农作物”时,变化不会持久。如果我在媒体部分使用图像裁剪器,则正在进行更改。保存对带有图像裁剪器的媒体项目所做的更改

我通过美女文档查看媒体资源的保存功能,但它似乎并没有为我工作。

的文档说,首先得到的ID,然后保存在回调:

mediaResource.getById(1234) 
     .then(function(media) { 
      media.name = "I want a new name!"; 
      mediaResource.save(media, false) 
       .then(function(media){ 
        alert("Retrieved, updated and saved again"); 
       }); 
     }); 

在我的覆盖对象我有这个提交功能:

submit: function (model) { //when user clicks save crops button 
        $scope.overlay.saving = true; 
        mediaResource.getById($scope.images[0].udi) 
         .then(function (media) { 
          media.umbracoFile = $scope.overlay.value; 
          mediaResource.save(media, false, []).then(function (media) { //save changes to media item, or craete if new 

           console.log("On saving start end:", $scope); 
           $scope.overlay.saving = false; 
           $scope.overlay.show = false; 
           notificationsService.remove(0); 
           notificationsService.success("The crops for '" + media.name + "' have been saved"); 
          }); 
         }); 
       } 

我没有得到任何错误响应时我点击“保存作物”,它调用提交功能,但更改没有被保存。我不确定我需要在媒体对象上执行哪些操作才能正确保存我的更改。

+0

我不知道我是否知道你想要什么。 Image Cropper使用预定义的作物,以便稍后可以使用它们裁剪显示的图像。你是否想给前端用户选择其中一个预定义值的可能性?或者您希望用户自由裁剪图像。 –

回答

0

好的,我想我知道你的意思。默认情况下,图像的umbracoFile属性使用ImageCropper数据类型,存储所有的图像和作物信息的JSON字符串格式:

{ 
"src":"/media/1050/Image1.jpg", 
"focalPoint":{"left":0.5,"top":0.5}, 
"crops":[ 
    {"alias":"crop1", 
    "width":500, 
    "height":800, 
    "coordinates":{ 
     "x1":0.30206315789473687, 
     "y1":0.0, 
     "x2":0.28148947368421051, 
     "y2":0.0} 
     } 
    ] 
} 

您可以显示此得到umbracoFile属性作为字符串:

var data = image.GetPropertyValue("umbracoFile").ToString(); 

所以传递给你的提交函数的模型必须重新创建所有的结构和值。