2016-04-17 14 views
0
.controller('ImageChangeController', function($scope, $http, $element){ 
     $scope.itemid = ''; 

     reader = new FileReader(); 
     file_inputs = $element.children('.img-change'); 
     img_doc = $element.children('img').get(0); 

     file_inputs.change(function(e){ 
      reader.onload = function(e) { 
       img_doc.src = e.target.result; 
      } 
      $scope.itemid = "999"; //does not work 

     }); 

     $scope.change_name = function(){ 
     $scope.itemid = "999"; 
     } 

を変更しない私のテンプレートのコードです:コントローラのプロパティは、ここでは、動的

<div ng-controller="ImageChangeController"> 
    <span>{{itemid}}</span> 
    <input type="file" class="img-change" name="{{itemid}}" accept="image/*"> 
    </div> 

私はng-click="change_itemid()"を通じてitemidを変更した場合、それはうまく仕事になります。

+1

代わりにjQueryのを使用しての角ディレクティブを使用します。http://ngmodules.org/modules/ng-file-upload – AlainIb

答えて

1

基本的に、あなたの代わりに非ネイティブ要素の角度ディレクティブを使用する必要がありますあなたは、実装を変更せずに問題を解決したい場合(例えば、direcitveはあなたが欲しい特色与えるものではありません) http://ngmodules.org/modules/ng-file-upload

を:

file_inputs.change(function(e){ 
     reader.onload = function(e) { 
      img_doc.src = e.target.result; 
     } 
     $scope.itemid = "999"; //does not work 

    }); 

関数は角度ダイジェストサイクル外と呼ばれる:

問題のソースコードのこの部分です。あなたは、変更に関する角度通知する必要があります:

file_inputs.change(function(e){ 
     reader.onload = function(e) { 
      img_doc.src = e.target.result; 
      $scope.$applyAsync(); 
     } 
     $scope.itemid = "999"; //does not work 
     $scope.$applyAsync(); 
    }); 
+0

私ngの変更による変更をキャプチャするために、: )。 – Helpme123

関連する問題