2016-12-16 51 views
0

我做了指令,在框中显示图像。 来源位于下方。摘要错误循环出现时,我加入ngf-max-size

angular.module('ptgui.imagebox',[ 
    'ngFileUpload' 
]) 
    .directive('ptguiImagebox', ['$compile', function($compile) { 
    return { 
     templateUrl: 'scripts/libs/ptgui/ptgui-imagebox.html', 
     restrict: 'E', 
     require: 'ngModel', 
     scope: { 
     ngModel: "=" 
     }, 
     replace: true, 
     link: function ($scope, element, attrs) { 

     //이미지 선택시 취소를 누를경우 리셋되는걸 방지하기 위한 처리 
     $scope.$watch('ngModel',function(newFile, oldFile){ 
      if (newFile) { 
      $scope['ngModel'] = newFile; 
      } else { 
      $scope['ngModel'] = oldFile; 
      } 
     }); 

     } 
    }; 
    }]); 

以下是指令模板。

<div class="thumbnail" ngf-accept="'image/*'" ngf-pattern="'*.jpg,*.jpeg,*.gif,*.png'"> 
    <img style="width: 100%;height: 100%;" ngf-thumbnail="ngModel || '/assets/images/upload.png'" > 
</div> 

然后我使用下面的指令。

<ptgui-imagebox class="col-md-3" style="width: 100px;height: 100px;" ng-model="product.image" ngf-select></ptgui-imagebox> 
        <div class="col-md-4 hidden-sm hidden-xs"> 
        <div class="file-drop-zone" ngf-select ngf-drop ng-model="product.image" ngf-drag-over-class="'file-drop-zone-over'" ngf-accept="'image/*'" ngf-pattern="'*.jpg,*.jpeg,*.gif,*.png'"> 
         <span class="help-block"><i class="fa fa-file-picture-o"> 파일을 여기로 끌어주세요.</i></span> 
        </div> 
        </div> 

上面的soruce不使用ngf-max-size呢。而我想要的就是这样。 但我必须检查文件大小,以便像下面那样添加ngf-max-size =“1M”。

<div class="file-drop-zone" ngf-select ngf-drop ng-model="product.image" ngf-drag-over-class="'file-drop-zone-over'" ngf-accept="'image/*'" ngf-pattern="'*.jpg,*.jpeg,*.gif,*.png'" # ngf-max-size="1MB"> 

但是当我补充一点,我能够看到如下循环中的错误。 enter image description here

+0

Didnt你刚才问这个问题,并得到了一个答案吗? http://stackoverflow.com/questions/41155650/ngf-max-size-digest-error-with-ng-file-upload-in-angular-js –

+0

是的,我知道。但它不是我想要的答案,我知道我找到的解决方案。 所以这个解决方案不能帮助解决我的问题。 我想我必须改变我的问题。 该指令使图像框上传图像。 但是,当我上传图像的大小,这是进入循环。 指令有什么问题。 什么时候它做循环。 我不知道原因。因为我知道问题的一部分是使用ngf-max-size的imagebox指令。 谢谢你的评论。 – EddyKim

+0

所以正确的方法是编辑/澄清您的上一个问题并对答案发表评论,以免它对您的问题有所帮助。这样,只有一个答案,您不会为单个问题创建10个线程,并且至少会向正在尝试帮助您的人员提供一些反馈,因为他们还会了解到某些解决方案在所有情况下都不起作用。 –

回答

0

您的问题是最有可能在这里:

$scope.$watch('ngModel',function(newFile, oldFile){ 
     if (newFile) { 
     $scope['ngModel'] = newFile; 
     } else { 
     $scope['ngModel'] = oldFile; 
     } 
    }); 

要覆盖你的观察的变量,去除所有的角内的道具,从而导致手表踢再次,一旦更新完成。

你必须正确处理变量更新:

Watch variable and change it

+0

谢谢你的回答。我找到了我的问题的解决方案。 – EddyKim