2017-10-09 42 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(); 

所以傳遞給你的提交函數的模型必須重新創建所有的結構和值。